Твин не повторяется бесконечно - PullRequest
0 голосов
/ 23 сентября 2011

Я пытаюсь анимировать шестиугольник, вращающийся как колесо, бесконечно:

function rotateCW(e:TweenEvent = null):void{
    var hexRot:Tween = new Tween(this, "rotationZ", None.easeNone, 0, 360, 2, true);
    hexRot.addEventListener(TweenEvent.MOTION_FINISH, rotateCW);        
}

По какой-то странной причине анимация останавливается после случайного количества повторений.Он варьируется от 2 до 600 раз до остановки.

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

Спасибо!

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Флэш-сборщик мусора очистил вашу переменную hexRot, поэтому анимация остановилась.Чтобы исправить это, используйте решение, предоставленное Kodiak :) Когда переменная объявлена ​​глобально, она не будет собрана, пока вы не добавите в нее ничего нового.

1 голос
/ 23 сентября 2011

Прежде всего вы должны определить hexRot и прослушать его MOTION_FINISH вне вашей функции.Поступая так, как вы делаете, каждый hexRot остается в памяти, так как к нему подключен слушатель.

Это может не решить вашу проблему, но это будет более чистый способ писать вещи, и вы будете менее уязвимы для странныхповедения.

private var hexRot:Tween;

/**
*Run only once
*/
function init():void {
    hexRot = new Tween(this, "rotationZ", None.easeNone, 0, 360, 2, true);
    hexRot.addEventListener(TweenEvent.MOTION_FINISH, rotateCW); 
}

function rotateCW(e:TweenEvent = null):void{    
    hexRot.start();       
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...