2008-11-21 2 views
2

С кодом, подобным приведенному ниже, иногда ребенок правильно контролирует свою анимацию, а иногда останавливается в случайных местах посередине. Почему они не работают правильно?Почему твины останавливаются случайным образом?

var t:Tween; 
t = new Tween(child1,"x",Elastic.easeOut,0,100,2,true); 
t = new Tween(child1,"y", Elastic.easeOut,0,100,2,true); 
t = new Tween(child2,"x",Strong.easeOut,300,400,1,true); 
t = new Tween(child2,"y", Strong.easeOut,300,400,1,true); 

ответ

1

Вы также можете создать массив в области своего класса, а затем просто направить твинов на этот массив. Хотя это может привести к тому, что подростки в массиве никогда не получат сбор мусора, даже после того, как они закончатся, поэтому вы можете захотеть очистить массив самостоятельно в тех точках, где вы знаете, что все подростки закончили.

3

Каждая анимация должна быть назначена отдельной переменной в глобальном масштабе. Следующий код ведет себя надежно:

var t1:Tween = new Tween(child1,"x",Elastic.easeOut,0,100,2,true); 
var t2:Tween = new Tween(child1,"y", Elastic.easeOut,0,100,2,true); 
var t3:Tween = new Tween(child2,"x",Strong.easeOut,300,400,1,true); 
var t4:Tween = new Tween(child2,"y", Strong.easeOut,300,400,1,true); 

Казалось бы, что, когда переменная повторно используется, твин, который больше не может ссылаться получить мусора или иначе остановился в середине его работы.

Такая же проблема может возникнуть, если вы используете отдельные переменные, но объявляете их в локальной области действия функции, а не в глобальной области вашего фрейма.

4

Кроме того, попробуйте использовать движок tween с открытым исходным кодом, а не с пакетом Flash. Два очень популярных: TweenLite и Tweener. Они обеспечивают большую производительность и большую функциональность/опции.

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