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 帧 第二次鼠标点击:播放接下来的 22 帧 第三次鼠标点击:播放接下来的 21 帧

但是,我很想知道是否有可能,例如,允许角色在第三次鼠标单击时在屏幕上向右移动。如果该字符在第三次点击时也改变了它的 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 回答