2011-11-08 7 views
2

私はスプライトアニメーションを扱うためにeaselJSを使ってHTML5 RPGゲームを作ろうとしています。矢印キーを押したときにキャラクターがアニメーションを再生するのではなく、フレーム0にジャンプしてアニメーションをループするのではなく停止するようです。Javascript easelJSアニメーションをキーダウンしながら

私が必要とするのは、キーが押されている間にアニメーションがループし続け、その代わりにキャラクターがフレームに詰まっていることです。

私はこれまでのゲームですが、私は実験していて、まだHTML5を学んでいるので、本当に混乱しています。ここで http://cloudrealms.com/dev/

私が使用していたコードです:

矢印キーキャプチャ:私のチックで

 $(window).keydown(
     function(e){ 
      keys[e.which] = true; 
      if(isMovementKey(e.which)) 
      { 
       moveOrder.unshift(e.which); 
       jQuery.unique(moveOrder); 
       animationsToPlay.push(1); 
      } 
      e.preventDefault(); 
      return false; 
     } 
    ); 
    $(window).keyup(
     function(e){ 
      keys[e.which] = false; 
      if(isMovementKey(e.which)) 
      { 
       moveOrder.splice(jQuery.inArray(e.which, moveOrder),1); 
      } 
     } 
    ); 

を私はHandleInput(と呼ばれる機能を持っている)、ここでのコードです:

function HandleInput() 
{ 
    switch (moveOrder[0]) { 
     case 38: /* Up arrow was pressed */ 
      playerSequence[playerID].gotoAndPlay("walk_up"); 
      playerSequence[playerID].y -= playerSequence[playerID].vY; 
     break; 
     case 40: /* Down arrow was pressed */ 
      playerSequence[playerID].gotoAndPlay("walk_down"); 
      playerSequence[playerID].y += playerSequence[playerID].vY; 
     break; 
     case 37: /* Left arrow was pressed */ 
      playerSequence[playerID].gotoAndPlay("walk_left"); 
      playerSequence[playerID].x -= playerSequence[playerID].vX; 
     break; 
     case 39: /* Right arrow was pressed */ 
      playerSequence[playerID].gotoAndPlay("walk_right"); 
      playerSequence[playerID].x += playerSequence[playerID].vX; 
     break; 
    } 
} 

私が知りたいことは、矢印キーが押されている間にプレーヤーのスプライトをどのようにアニメートできますか?

答えて

3

少し紛らわしく、コードが何をしているのかを知るのは難しいですが、リンクを提供できますか?

キーが押されている間にプレーヤーを移動させるという点では、いくつかのアドバイスを提供することができます。 onkeydownのイベントの仕組みは、キーが停止している限り、イベントが発生することです。

私があなただったら、キーが押されたかどうかを表すブール値を持っています。 keydownイベントでは、あなたはこれをtrueに設定し、からkeyupイベントに、あなたは、これは任意のキーのために働く、あなたがKeyDownイベント機能にしたいかを指定する必要があります偽:

$(window).keydown(
    function(e){ 
     bool_keyDown = true; 
    } 
); 
$(window).keyup(
    function(e){ 
     bool_keyDown = false; 
    } 
); 

注意にそれを設定したが、あなたはそれをkeyup関数の中に残すことができます。あなたのティッカーでは、それが本当であるかどうかをチェックします。それが本当だとイベントでは、あなたのspritesheet上のgotoAndPlay機能を実行します。これは、いずれかのキーに固有のものではありません

function HandleInput() 
{ 
    if(bool_keyDown) 
     playerSequence[playerID].gotoAndPlay("walk_up"); 
} 

。だから、それをブールからストリングに変えたいかもしれません。文字列「上」、「下」、「左」、「右」などがあり、キーが押されていない場合はnullです。お役に立てれば。

- アシュリー

関連する問題