で問題が発生していsetIntervals()
ます。これらの問題が頻繁に発生することは知っていますが、実装の正確な問題が何であるかを理解できないようです。新しいものをインスタンス化するたびObstacle()
に、障害物のインスタンスを回転させるために使用される設定間隔がクリアされ、障害物の次のインスタンス化は 2 倍の速さで回転するように見えます! スコープに関係していると確信していますが、私は比較的初心者なので、ここで何が起こっているのかよくわかりません。それ以上の情報を提供できます。
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);