2012-04-23 74 views
-1

我想在switch語句中使用一個變量,因爲它使播放器運動平穩。這是我的流暢播放器移動代碼。如何在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;} 
} 

我想實現它到我現有的代碼。我需要碰撞開關語句。

此代碼正常工作,但玩家移動非常呆板。

預先感謝

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

}

+0

-1模糊的問題,研究得不好。 – mfa 2012-04-23 17:36:39

+0

對不起,我更新了我的問題。 – LochyMacleod 2012-04-24 06:19:54

+0

問題是什麼? – Marty 2012-04-24 06:23:20

回答

0
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(true) 
    { 
     case (leftArrow): 
      hero.x -=10; 
      break; 

     case (rightArrow): 
      hero.x +=10; 
      break; 

     case (upArrow) : 
      hero.y -=10; 
      break; 

     case (downArrow): 
      hero.y += 10; 
      break; 
    } 
} 
1

這是一個良好的圖案使用鍵盤時設置方向的布爾型變量,。試着功能movehero的驗證碼

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

注意:如果你真的想使你的英雄平滑移動,增加遊戲的幀速率,並減慢速度。所以,英雄會執行MORE SMALL步驟,看起來是平穩的動作,而不是更新了,但是BIG步驟。

因此,而不是增加+10,使其+2和增加幀率。 30-40 fps對於平穩移動來說足夠了。

祝你好運,希望它有所幫助:)