我正在尝试使用开关语句替换 if 和 else if 语句。
Ball类来自一个外部动作脚本文件,该文件有一个变量,我传入球半径(半径= 30)。
如何将if和else if语句转换为switch语句?
代码:
private var ball:Ball;
private var left:Number = 0;
private var right:Number = stage.stageWidth;
private var top:Number = 0;
private var bottom:Number = stage.stageHeight;
if(ball.x >= right + ball.radius)
{
ball.x = left - ball.radius;
}
else if(ball.x <= left - ball.radius)
{
ball.x = right + ball.radius;
}
if(ball.y >= bottom + ball.radius)
{
ball.y = top - ball.radius;
}
else if(ball.y <= top - ball.radius)
{
ball.y = bottom + ball.radius;
}
谢谢
答案 0 :(得分:3)
这有一个小技巧 - 你在不是开关的情况下评估不平等:
switch(true) {
case ball.x >= right + ball.radius:
ball.x = left - ball.radius;
break;
case ball.x <= left - ball.radius:
ball.x = right + ball.radius;
break;
}
switch(true){
case (ball.y >= bottom + ball.radius):
ball.y = top - ball.radius;
break;
case (ball.y <= top - ball.radius):
ball.y = bottom + ball.radius;
break;
}
答案 1 :(得分:1)
将switch语句视为荣耀的IF
基本上,您正在评估case语句中的switch语句
切换语句以自上而下的顺序进行评估,因此一旦找到匹配,它将在运行该代码后的代码中断开。
此外,在您的情况下,您希望将X和Y分开(
switch(true){
case (ball.x >= right + ball.radius):
ball.x = left - ball.radius;
break;
case (ball.x <= left - ball.radius):
ball.x = right + ball.radius;
break;
default:
// no match
}
switch(true){
case (ball.y >= bottom + ball.radius):
ball.y = top - ball.radius;
break;
case (ball.y <= top - ball.radius):
ball.y = bottom + ball.radius;
break;
default:
// no match
}