我有点纠结于我的switch语句(我以前从未用过switch )。当我的对象到达舞台的顶部或底部时,我有一个命中测试。当这种情况发生时,我想要切换状态(这个游戏是一个简单的平台,允许玩家在击中新表面时切换重力。下面是我当前的代码:
{
...
if(player.hitTestObject(bottom)) {
//Switch state to normal
}
if(player.hitTestObject(top)) {
//Switch state to inverted
}
}
switch (myGrav){
case "NORMAL":
trace("Normal")
player.gotoAndPlay(1);
oktoJump = false;
player.y = 376.5;
case "INVERTED":
trace("Inverted")
player.gotoAndPlay(8);
oktoJump = false;
player.y = 12;
}谢谢!
发布于 2012-11-28 06:50:31
switch语句中的Cases缺少break;因此,代码将通过switch语句继续执行。
这应该是:
var myGrav:String = "NORMAL";
if (player.hitTestObject(bottom))
myGrav = "NORMAL";
if (player.hitTestObject(top))
myGrav = "INVERTED";
switch (myGrav)
{
case "NORMAL":
trace("Normal")
player.gotoAndPlay(1);
oktoJump = false;
player.y = 376.5;
break;
case "INVERTED":
trace("Inverted")
player.gotoAndPlay(8);
oktoJump = false;
player.y = 12;
break;
}发布于 2012-11-28 22:04:52
当我可以逃脱惩罚的时候,我更喜欢更少的变量。
switch (true){
case (player.hitTestObject(bottom)):
trace("Normal")
player.gotoAndPlay(1);
oktoJump = false;
player.y = 376.5;
break;
case (player.hitTestObject(top)):
trace("Inverted")
player.gotoAndPlay(8);
oktoJump = false;
player.y = 12;
break;
}https://stackoverflow.com/questions/13594436
复制相似问题