0

私のフラッシュゲームで私のキャラクターを動かすためにAキーを割り当てることができます。

     playerOne.y = mouseY;
}

function movePlayerTwo(evt:KeyboardEvent):void {
    if(evt.keyCode == Keyboard.UP) { playerTwo.y = playerTwo.y - 20; }
    if(evt.keyCode == Keyboard.DOWN) { playerTwo.y = playerTwo.y + 20; }
}
4

2 に答える 2

0

Aキーの ASCII 値は 65 です。

if(evt.keyCode === 65)
{
    // Do movement.
}

ここで他のいくつかを調べることができます。

于 2013-08-12T23:02:26.467 に答える
0

リスナーで

stage.addEventListener(KeyboardEvent.KEY_DOWN, onDown);

stage.addEventListener(KeyboardEvent.KEY_UP, onUp);

いずれかのキーが押されているかどうかを聞くだけです。ハンドラ onDown() および onUp() では、魔女キーが実際に押されたことを確認する必要があります。通常、コードをきれいに保つためにスイッチを使用して行われます。次に例を示します。

private function onDown(e:Event):void
{
   switch(e.keyCode)
   {
      case 65: // this is the keycode for key "a"
      keyAPressed = true;
      break;
   }
}

動きについては、次のようないくつかの変数を作成することをお勧めします。

private var isMoving:Boolean = false;
private var leftPressed:Boolean = false;
private var rightPressed:Boolean = false;
private var goingLeft:Boolean = false;

これにより、次のようなループでより良いコントロールを得ることができます:

private function movementLoop():void
{
   if (! isMoving)
   return; // if the char's not moving it's safe to return the function
   if (goingLeft)
   x -= movementSpeed;
   else
   x += movementSpeed;
}

このサイトを使用して、すべてのボタンのキーコードを確認できます: http://www.kirupa.com/developer/as3/using_keyboard_as3.htm

この例からわかるように、動きは、ボタンを押すことによってではなく、タイマーまたは ENTER_FRAME イベントによって呼び出すことができるループで処理されます。多くの理由で重要ですが、そのうちのいくつかは次のとおりです。

  • キーを押したままにして、移動コマンドをスパムしていません。
  • キーボード ハンドラが小さくなり、読みやすくなり、新しい実装で拡張できるようになりました
  • isMoving 変数と direction 変数を変更することで、同じメソッドで NPC を動かすことができます。
  • 上記と同じように、マルチプレイヤー ゲームでこのデータをサーバーに送信します。
  • 左と右の両方を押すと、変数はプレイヤーを左と右の両方に動かそうとするのではなく、移動の方向を切り替えることができます。

ご質問にお答えできれば幸いです。

幸運を!

于 2013-08-13T06:30:40.743 に答える