2

スプライトアニメーションを処理するためにeaselJSを使用してHTML5RPGゲームを作成しようとしています。矢印キーを任意の方向に押すと、キャラクターはアニメーションを再生しません。代わりに、アニメーションをループする代わりに、フレーム0に戻って停止するように見えます。

必要なのは、キーが押されている間ループを継続するアニメーションです。代わりに、キャラクターがフレームに引っかかってしまいます。

これが私がこれまでに持っているゲームです、私が実験していて、まだ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;
    }
}

知りたいのは、矢印キーを押している間にプレーヤーのスプライトをアニメーション化するにはどうすればよいですか?

4

1 に答える 1

3

少しわかりにくく、コードが何をしているのかわかりにくいので、リンクを提供していただけますか?

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

もし私があなただったら、キーが押されたかどうかを表すブール値を持つでしょう。keydown イベントでは true に設定し、keyup イベントでは false に設定します。

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

これはどのキーでも機能することに注意してください。keydown 関数で必要なものを指定する必要がありますが、keyup 関数では汎用のままにすることができます。ティッカーで、それが真かどうかを確認します。true の場合は、スプライトシートで gotoandplay 機能を実行します。

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

これは、1 つのキーに固有のものではありません。そのため、ブール値から文字列に変更したい場合があります。おそらく、「up」、「down」、「left」、「right」などの文字列があり、キーが押されていない場合は null です。お役に立てれば。

--アシュリー

于 2011-12-28T18:11:26.547 に答える