моторные инструменты | переписать свойство анимации без создания новой анимации каждый раз - PullRequest
1 голос
/ 01 июля 2011

Есть ли способ перезаписать свойство анимации движения? Если я напишу

el.set('tween', {duration: ‘long’, onComplete: callback});

, а затем

el.set('tween', {duration: 200, onComplete: secondcallback });

Я не могу заменить старое свойство (обратный вызов снова срабатывает)

Возможно ли решить эту проблему без создания нового Fx.Tween каждый раз?

Ответы [ 2 ]

2 голосов
/ 02 июля 2011

Каждый раз, когда вы устанавливаете onComplete для одного и того же экземпляра, обратные вызовы выдвигаются и связываются с одним и тем же «завершенным» событием, и каждый обратный вызов будет вызываться после того, как событие запущено.

Чтобы «заменить» обратный вызов onComplete, вы можете использовать removeEvent, т.е.

el.set('tween', {duration: ‘long’, onComplete: callback});

//and then...

el.get('tween')
    .removeEvent('complete', callback)
    .addEvent('complete', secondcallback);

демо => http://jsfiddle.net/NNzQ7/

0 голосов
/ 02 июля 2011

Я бы создал две независимые анимации и держал их рядом:

var fx1 = new Fx.Tween(element, {onComplete: callback});
var fx2 = new Fx.Tween(element, {onComplete: anothercallback});

И тогда вы можете использовать их индивидуально:

fx1.start('background-color', 'cyan', 'red');
fx2.start('background-color', 'red', 'cyan');
...