很抱歉,如果这对其他人来说很明显,但我无法理解ActionScript 3.0中的内容(巨大的n00b btw)
我有这个控制速度的代码:
public function keyDownHandler(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.LEFT)
{
vx = -5;
}
else if (event.keyCode == Keyboard.RIGHT)
{
vx = 5;
}
else if (event.keyCode == Keyboard.UP)
{
vy = -5
}
else if (event.keyCode == Keyboard.DOWN)
{
vy = 5;
}
}
当运行时,如果我同时按住LEFT和UP,Sprite会对角移动,但是最后两个条件(Keyboard.UP&amp; Keyboard.DOWN)是elseifs的事实应该阻止它们被评估吗?< / p>
有人能够对这种行为有所了解吗?
答案 0 :(得分:3)
当您按下两个按钮时,闪光灯会为每个按钮触发两个独立事件。如果你想跳过这种情况,你可以为每个按钮创建状态标志(leftPressed,rightPressed等),在键处理程序中更改状态,并根据每个按钮的当前状态调用check motion方法。
答案 1 :(得分:1)
如果您不想要对角线移动,请首先将速度分量设置为零:
public function keyDownHandler(event:KeyboardEvent):void
{
vx = vy = 0; ////
if (event.keyCode == Keyboard.LEFT)
{
vx = -5;
}
else if (event.keyCode == Keyboard.RIGHT)
{
vx = 5;
}
else if (event.keyCode == Keyboard.UP)
{
vy = -5
}
else if (event.keyCode == Keyboard.DOWN)
{
vy = 5;
}
}