имам обект от клас Abon
и след това искам този обект да се движи из страницата.
a = new Abon();
a.init();
a.move();
методът move()
съдържа:
function abon_move () {
var x = this.x;
var y = this.y;
var direction_x = Math.random()*5 - 5;
var direction_y = Math.random()*5 - 5;
var x_new = x + direction_x * this.movement_rate;
var y_new = y + direction_y * this.movement_rate;
console.log(x_new+" "+y_new)
$(".abonent."+this.id).animate( {
left:+x_new,
top:+y_new
}, 'slow', "linear", function() { this.move() });
}
Всичко, което искам, е методът move
(представен като функция abon_move()
) да се повтаря отново и отново, след като animate
спре. Но проблемът е, че this.move()
, показан в обратното извикване, няма връзка с моя обект, защото this
на това място сочи към HTML елемента, избран от jQuery.
UPD:
function Abon(id) {
...
this.move = abon_move;
...
}
Abon.prototype.move = abon_move;
И действителният метод е същият, но без обратно извикване в animate
тогава се опитвам да направя следното:
setInterval( a[0].move , 300); //doesn't work - says `this` members are undefined
setInterval( a[0].move() , 300); //works only one time and stops
Благодаря ви за всяка помощ!