0

大量のコードでゲームを開発しています。ゲームの未完成バージョンはこちらにあります: http://rainisfalling.co.za/sheep-jump-test/

キー リスナーは 2 つあります。1 つは大きなジャンプのために SPACEBAR をリッスンし、もう 1 つは小さなジャンプのために CTRL をリッスンします。私が経験している問題は、2 つのボタンを正確に同時に押すと、両方のジャンプ アクションが発生し、非常に大きなジャンプが発生することです。(2 つのジャンプの高さの組み合わせ。)

これが私のコードの簡略版です:

addEventListener(KeyboardEvent.KEY_DOWN, bigJump);

function bigJump(e:KeyboardEvent){
//check to see that keycode = SPACEBAR
//code to do the actual jump
//also remove the event listeners for the jumps while in the air
}


addEventListener(KeyboardEvent.KEY_DOWN, smallJump);

function smallJump(e:KeyboardEvent){
//check to see that keycode = CTRL
//code to do the actual jump
//also remove the event listeners for the jumps while in the air
}
4

2 に答える 2

3

これは、読んだ後には非常に明白に思えるかもしれませんが、関数内にリスナーを 1 つ追加するだけです。 do if(CTRL) smallJump else if(SPACEBAR) bigJump

このように 1 つの条件のみが発生します... また、それをそのままにして、それをゲームに統合することを検討してください。私はスーパー ジャンプのアイデアが好きです :)。

于 2012-03-28T15:14:43.103 に答える
2

ジャンプを 1 つのハンドラーに結合します。

addEventListener(KeyboardEvent.KEY_DOWN, jump);

function jump(e:KeyboardEvent){
       switch( e.keyCode ){
       case 32:  //<Space>
       //Big jump code
       break;
       case 17:  //<Ctrl>
       //Small jump code
       break;
       }
}
于 2012-03-28T15:20:37.563 に答える