Flash 如何在switch语句*updated中使用变量*

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

我试图在我的switch语句中使用一个变量,因为它可以使玩家的动作更加流畅。这是我的平滑播放器移动代码

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 ;
}