Actionscript 3 开关语句和数字范围
如何在as3中创建一个switch语句,使其适用于整个数字范围Actionscript 3 开关语句和数字范围,actionscript-3,Actionscript 3,如何在as3中创建一个switch语句,使其适用于整个数字范围 if (mcPaddle.visible == true) { switch (score) { case 10://10 to 100 myColor.color = 0x111111; break; case 110://110 to 1000 //etc etc break;
if (mcPaddle.visible == true)
{
switch (score)
{
case 10://10 to 100
myColor.color = 0x111111;
break;
case 110://110 to 1000
//etc etc
break;
}
}
我尝试了多种方法使案例适用于10-100和110-1000之间的所有数字,但似乎找不到一种方法,在as3中也找不到适用于这种情况的正确语法。ActionScript的switch语句不适用于范围,但您可以轻松地使用if/else链:
if (score >= 10 && score <= 100)
{
//10 - 100
}
else if (score <= 110)
{
//101 - 110
}
else if (score <= 1000)
{
//111 - 1000
}
if(score>=10&&scoreswitch语句只是对if(a=b)或(a=c)或(a=d)的重述。
类型构造。它们不适用于范围。您可以使用故障诊断来模拟它:
switch (score) {
case 10:
case 11:
case 12:
case 13:
case etc...
blah blah blah
break;
}
但这是一种愚蠢可笑的方式。使用常规的if()
更容易/更简洁。您可以使用开关块:
var score:Number = 123;
switch(true){
case score > 120 && score < 125 :
trace('score > 120 && score < 125');
break;
case score > 100 && score < 140 :
trace('score > 100 && score < 140');
break;
case score == 123 :
trace('score == 123');
break;
}
//score > 120 && score < 125
var分数:Number=123;
开关(真){
病例评分>120分和<125分:
跟踪('分数>120&&分数<125');
打破
病例评分>100分和<140分:
跟踪('分数>100&&分数<140');
打破
病例评分==123:
跟踪('score==123');
打破
}
//分数>120和<125
对于那些想在HTML/jQuery中使用它的人,我已经使用@OXMO456的答案创建了这个简单的笔:
您只需正常设置var
,然后删除以trace
开头的行
另外,我添加这个作为回答,因为我没有足够的代表对他的评论。如果有人可以,请移动/复制这个。谢谢!该死,我希望避免这种情况,因为如果嵌套不美观且杂乱无章,则会出现大的其他情况,但如果switch语句不能完成范围,我想我别无选择。它们实际上不必嵌套,你可以将它们链接起来。如果你不在每个关卡后面加上四个空格的偏移量,If/else块的可读性就会很好。谢谢,这很好用,这正是我所需要的。从来没有想过要更改switch语句来检查所有内容是否为true,然后检查分数的真值。@alxx-这看起来很脏,但让我自己惊讶的是,这个开关范围是code实际上优于if else链。我测试了100万个随机数进入10个大小相等的范围,交换机的性能始终比它高15%。@alxx这是使用它的一个很好的理由。请投票支持性能测试