Использование вашей кнопки никогда не должно замедлять работу приложения. Так что что-то не так.
- А) Это твой код
- B) Свой код (Твин)
Так что же может произойти:
- Time 0 sec - Button click - 1. tween starts, duration 3 sec.
- Time .1 sec - Button click - 2. tween starts, duration 3 sec.
- Time .2 sec - Button click - 3. tween starts, duration 3 sec.
Мы запускаем новых подростков с интервалом в 0,1 сек. После 3 сек. тогда у нас одновременно работает 30 подростков.
В это время должна закончиться первая анимация, отмените регистрацию в любых событиях, отправляемых экранными объектами (введите кадр) или таймерами. По-видимому, это не так, и ваше приложение добавляет анимацию к анимации, а также не завершает работу.
Возможно, что ваша анимация проверяет расстояние между currentposx
и varx
, и только если оба равны, анимация останавливается. Поскольку в настоящее время существует одновременная анимация, такая ситуация может никогда не возникнуть, и ваша анимация продолжает пытаться перемещать ваш экранный объект снова и снова.
Если бы вы показали полный рабочий код, я мог бы проверить это в профилировщике.
-
В любом случае, вам следует сохранить текущую анимацию в постоянной переменной, такой как _currentTween
, и либо убить анимацию перед началом новой, либо просто обновить значения текущей анимации при повторном нажатии кнопки:
private var _currentTween : Tween;
private function buttonClickedVersionA() : void {
if (_currentTween) _currentTween.stop(); // or whatever it is called
_currentTween = new Tween(...);
}
private function buttonClickedVersionB() : void {
if (!_currentTween) {
_currentTween = new Tween(...);
} else {
_currentTween.start = currentposx;
_currentTween.end = varx;
_currentTween.restart(); // or whatever
}
}