есть объект класса 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
Спасибо за любую помощь!