2012-04-23 15 views
-1

switchステートメントで変数を使用しようとしていますが、これはプレーヤーの動きを滑らかにします。これは私の滑らかなプレーヤーの動きのコードです。switchステートメントで変数を使用する方法* updated *

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

}

+0

-1漠然とした質問、不十分な調査を願って、あなたに幸運を願っています。 – mfa

+0

申し訳ありません私は私の質問を更新しました。 – LochyMacleod

+0

問題は何ですか? – Marty

答えて

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

注:あなたは本当に、あなたのヒーローはスムーズに移動させるゲームのフレームレートを増加させ、および速度を遅くしたい場合。だから、英雄はを実行します。FEWERではなく、スムーズな動きがあるように見えますが、ステップです。BIGステップです。

したがって、+ 10をインクリメントする代わりに、を+2にしてフレームレートをに増やします。 30-40 fpsはスムーズな動きに十分です。

は、それが役立ちます:)