我的setIntervals()
有問題。我知道這些問題出現很多,但我似乎無法弄清楚我的實現有什麼問題。每當我實例化一個新的Obstacle()
時,它就會清除用於旋轉障礙物實例的設置間隔,並且障礙物的下一個實例化似乎旋轉兩次!我相信這是與範圍有關,但我是一個相對初學者,所以我不太確定這裏發生了什麼。可以提供更多信息。從對象方法中使用多個時,setInterval()加速
var obstacleCount = 1;
function Obstacle(){
this.angle = 0;
this.id = obstacleCount;
this.elPrefix = "cookie-";
this.el = '.' + this.elPrefix + this.id;
$('#game-wrapper').append('<div class="' + this.elPrefix + this.id + '"></div>');
obstacleCount += 1;
}
var intervals = new Array();
Obstacle.prototype.roll = function() {
self = this;
intervals[self.id] = setInterval(function(){
self.angle -= 3;
$(self.el).rotate(self.angle);
}, 5);
$(self.el).animate({
right: 1000
}, 4000, 'linear', function(){
$(self.el).remove();
clearInterval(intervals[self.id]);
});
};
var obstacles = new Array();
setInterval(function(){
obstacleID = obstacleCount;
obstacles[obstacleID] = new Obstacle();
obstacles[obstacleID].roll();
}, 1000);
可以在動畫回調你輸出self.id和粘貼在這裏的結果?這應該給我們更多的線索。 – 2013-05-14 13:06:33
好奇 - 我得到了一堆5s,然後一堆10s,然後一堆15s ... – RichieAHB 2013-05-14 13:11:28
你可以創建一個演示http://jsfiddle.net/ – 2013-05-14 13:11:32