1

そのキャラクターをクリックするたびに、前のクリックとはまったく異なることをするキャラクターが欲しいです。今のところ、キャラクター用にこれまでに約 113 フレームを作成しました。ここでやめるか、将来もっとフレームを作りたいと思うかもしれません。要するに、私は自分自身を初心者の Web 開発者だと考えており、クリックしたタイミングに応じてキャラクターを適切に制御する方法を知りたい. たとえば、これは私がこれまでに持っているコードです...

(function() {
var play_on_click = [70, 22, 21];
var play_index = 0;

$('#stacheguy2').click(function() {
    var current_play = play_on_click[play_index];

    play_index++;
    if (play_index > play_on_click.length-1) {
        play_index = 0;
    }

    $(this).sprite(fps: 30, no_of_frames: 113, play_frames: current_play});
});
})();

現時点では、これにより次のことが可能になります。

最初のマウス クリック: 最初の 70 フレームを再生 2 回目のマウス クリック: 次の 22 フレームを再生 3 回目のマウス クリック: 次の 21 フレームを再生

ただし、たとえば、マウスの 3 回目のクリックでキャラクターが画面を横切って右に移動できるかどうかを知りたいです。3 回目のクリックでその文字の z-index も変更された場合はどうなるでしょうか。

この種の制御は可能ですか?

お忙しいところ、アドバイスをいただけるとありがたいです!

4

1 に答える 1

0

配列に関数を追加してplay_on_clickから、現在のインデックスのタイプを確認します (int または関数の可能性があります)。Javascript が美しいのは、それがとても簡単だからです。

(function() {
     var isFunction = function(obj) {
        return typeof(obj) == "function";
      };

     // Changing the array, adding a function at third step instead of int
     var play_on_click = [70, 22, function (){
         // Does any action on the guy, for example your zIndex stuff
         $('#stacheguy2').css('zIndex', 2);
         // return number of frames
         return 21 ;
     }];
     var play_index = 0;

     $('#stacheguy2').click(function() {
         var current_play = play_on_click[play_index];

         play_index++;
         if (play_index > play_on_click.length-1) {
            play_index = 0;
         }

         // If function 
         if ( isFunction ( current_play ) ) {
             // run function and get returned number of frames
             current_play = current_play () ;
         }
         $(this).sprite(fps: 30, no_of_frames: 113, play_frames: current_play});
     });
})();
于 2012-12-06T21:01:47.177 に答える