Flash 如何在switch语句*updated中使用变量*
我试图在我的switch语句中使用一个变量,因为它可以使玩家的动作更加流畅。这是我的平滑播放器移动代码Flash 如何在switch语句*updated中使用变量*,flash,actionscript,Flash,Actionscript,我试图在我的switch语句中使用一个变量,因为它可以使玩家的动作更加流畅。这是我的平滑播放器移动代码 stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedDown); stage.addEventListener(KeyboardEvent.KEY_UP, keyPressedUp); stage.addEventListener(Event.ENTER_FRAME,movehero); function k
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedDown);
stage.addEventListener(KeyboardEvent.KEY_UP, keyPressedUp);
stage.addEventListener(Event.ENTER_FRAME,movehero);
function keyPressedDown(event:KeyboardEvent){
if(event.keyCode==37){leftArrow = true;}
else if (event.keyCode == 39){rightArrow=true;}
else if(event.keyCode ==38){upArrow = true;}
else if(event.keyCode ==40){downArrow = true;}
}
function keyPressedUp(event:KeyboardEvent){
if(event.keyCode==37){leftArrow = false;}
else if (event.keyCode == 39){rightArrow=false;}
else if(event.keyCode ==38){upArrow = false;}
else if(event.keyCode ==40){downArrow = false;}
}
function movehero(event:Event){
if(leftArrow){hero.x -= 10;}
if(rightArrow){hero.x += 10;}
if(upArrow){hero.y -= 10;}
if(downArrow){hero.y += 10;}
}
我正在尝试将其实现到我现有的代码中。我需要用于冲突的switch语句
这段代码运行良好,但玩家的移动非常缓慢
提前谢谢
I am trying to acheive something like this, but this does not work
var leftArrow:Boolean= false;
var rightArrow:Boolean= false;
var upArrow:Boolean= false;
var downArrow:Boolean=false;
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedDown);
stage.addEventListener(KeyboardEvent.KEY_UP, keyPressedUp);
stage.addEventListener(Event.ENTER_FRAME,movehero);
function keyPressedDown(event:KeyboardEvent){
if(event.keyCode==37){leftArrow = true;}
else if (event.keyCode == 39){rightArrow=true;}
else if(event.keyCode ==38){upArrow = true;}
else if(event.keyCode ==40){downArrow = true;}
}
function keyPressedUp(event:KeyboardEvent){
if(event.keyCode==37){leftArrow = false;}
else if (event.keyCode == 39){rightArrow=false;}
else if(event.keyCode ==38){upArrow = false;}
else if(event.keyCode ==40){downArrow = false;}
}
function movehero(event:Event){
switch(event){
case leftArrow:
hero.x -=10;
break;
case rightArrow:
hero.x +=10;
break;
case upArrow:
hero.y -=10;
break;
case downArrow:
hero.y += 10;
break;
default :
break;
}
}使用键盘时,设置方向的布尔变量是一种很好的模式。请尝试以下函数代码:
function movehero(event:Event)
{
if (this.leftArrow):
hero.x -= 10 ;
if (this.rightArrow)
hero.x += 10 ;
if (this.upArrow)
hero.y -= 10 ;
if (this.downArrow)
hero.y += 10 ;
}
注意:如果你真的想让你的英雄移动顺畅,增加游戏的帧速率,并降低速度。因此,英雄将执行更多的小步骤,这似乎是平稳的移动,而不是更少的步骤,而是大步骤
因此,与其增加+10,不如将其设为+2并增加帧速率。30-40 fps的速度足够平稳移动
祝你好运,希望有帮助:)-1模糊的问题,研究不足。抱歉,我更新了我的问题。到目前为止,这是我的游戏,它还处于早期阶段,你可以看到运动非常糟糕,很难超越敌人。我想在代码中实现平滑的玩家移动,但它必须在switch语句中,因为我的碰撞代码就是这样工作的。我可以让玩家移动平滑。如果它不是在switch语句中实现的,但是它必须在switch语句中,因为这是冲突所需要的。因此,没有必要了解如何将平滑代码实现到switch语句中。我更新了问题,让你明白我的意思。谢谢你的帮助,我想我已经知道了,我会用答案更新我的问题。如果你把它寄了,我会把它标记为正确的。
function movehero(event:Event)
{
if (this.leftArrow):
hero.x -= 10 ;
if (this.rightArrow)
hero.x += 10 ;
if (this.upArrow)
hero.y -= 10 ;
if (this.downArrow)
hero.y += 10 ;
}