2013-08-09 3 views
0

Использование Dojo 1.9, я играю некоторые анимации, как это:Как остановить анимацию в додзё

that.fadeOutActive = baseFx.fadeOut({ node: "active-container", duration: 1000, delay: 3000 }); 
that.fadeInInactive = baseFx.fadeIn({ node: "inactive-container", duration: 1000, delay: 3000 }); 
coreFx.combine([that.fadeOutActive, that.fadeInInactive]).play(); 

, а затем попытаться остановить их на события, как это:

coreFx.combine([that.fadeOutActive, that.fadeInInactive]).stop(); 

проблема заключается в том, что это предотвращает стрельбу анимации (что является желаемым поведением), но это не останавливает ее, если она уже началась (что является проблемой). Как я могу остановить анимацию, если смогу вообще?

EDIT: Оказывается, моя проблема не была в коде, который я опубликовал, это было в обнаружении анимации.

+1

It похоже, что вы создаете два отдельных события. Тот, который играет, и тот, который ничего не делает. Вы пытались сохранить ссылку на исходную анимацию (которая воспроизводится) в некоторой переменной (скажем, «myAnimation»), а затем вызвать 'myAnimation.stop();' в вашей функции события? – Default

+0

@Default that.fadeOutActive и that.fadeInInactive - это переменные, которые ссылаются на две анимации, которые я запускаю, и я вызываю .stop() на них с помощью комбайна. Теперь я вижу, что я запускаю анимацию дважды, но это не то, что вызывает у меня проблемы ... – Zemljoradnik

ответ

1

dojo/fx::combine() вспомогательная функция, которая может принимать список додзё/_Образы базовой/FX :: объекты анимации и объединить их таким образом, что их последствия все работают параллельно. С помощью этой функции анимации, которые влияют на несколько узлов, могут быть сгенерированы и выполнены одновременно.

Вы используете coreFx.combine одновременно fadeIn один элемент и fadOut другой элемент.

Вместо создания новой комбинированной анимации следует хранить ссылку на существующую комбинированную анимацию, а затем использовать эту ссылку, чтобы остановить комбинированную анимацию:

that.fadeOutActive = baseFx.fadeOut({ node: "active-container", duration: 1000, delay: 3000 }).play(); 
that.fadeInInactive = baseFx.fadeIn({ node: "inactive-container", duration: 1000, delay: 3000 }).play(); 
that.combinedAnim = coreFx.combine([that.fadeOutActive, that.fadeInInactive]).play(); 

, а затем позже:

that.combinedAnim.stop(); 
+0

Хорошая идея сохранить ссылку на объединенную анимацию. Но оказалось, что моя проблема была в другом месте. – Zemljoradnik

Смежные вопросы