Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   не доигрывается анимация/зависает (http://www.flasher.ru/forum/showthread.php?t=167021)

x3stick 07.09.2011 15:11

не доигрывается анимация/зависает
 
Как пофиксить недоигрываение/зависаение флеша при одновременном выполении нескольких функций, в частности в которой есть Tween`ы?
Редко, но бывает что зависает картинка. На разных машинах. Версия плеера последняя.
Читал что можно выставить таймеры с условиями что каждый следующая функция выполняется после предыдущей и это может решить проблему. Но как сделать если они все должны двигаться.проигрываться одновременно?

dimarik 07.09.2011 16:09

Сохраняйте ссылку на Tween, иначе он попадает под уборку мусора.

x3stick 07.09.2011 18:08

Цитата:

Сообщение от dimarik (Сообщение 1029098)
Сохраняйте ссылку на Tween, иначе он попадает под уборку мусора.

Спасибо :) А это как?

Zebestov 08.09.2011 10:26

Поиск по форуму "Tween до конца" принесет новых знаний в этом вопросе.

x3stick 16.10.2011 23:11

Напишу ответ на случай если кто то еще столкнется с подобной проблемой.
Стандартный Tween зависает, и судя по отзывам на форуме зависает довольно часто.
Вместо него рекомендуют использовать TweenLite или TweenMax.
Если изначально использовал Tween, перейти на TweenLite не трудно.
Очень понятно и хорошо про TweenLite написано тут:
http://www.greensock.com/get-started-tweening/

Kolyunya 17.10.2011 01:49

Уважаемые знатоки, подскажите, пожалуйста! Столкнулся с такой же проблемой. Твин-ю большое кол-во элементов одновременно. Если их больше 20-30 твин не доходит до конца. Как это исправить?


Цитата:

Сообщение от dimarik (Сообщение 1029098)
Сохраняйте ссылку на Tween, иначе он попадает под уборку мусора.

Подскажите, пожалуйста, как это?

КорДум 17.10.2011 10:07

Цитата:

Подскажите, пожалуйста, как это?
Код AS3:

private var _tween:Tween;
...
_tween = new Tween( ... );

В случае с кучей твинов нужен массив или вектор.

dimarik 17.10.2011 10:09

Например, в словаре.
Код AS3:

 
private const _tweens:Dictionary = new Dictionary();
 
// или в массиве
//private const _tweens:Array = new Array();
 
private function nextTween():void {
    const tween:Tween = new Tween();
    this._tweens[tween] = true;
    //this._tweens.push(tween);
    tween.addEventListener(TweenEvent.MOTION_FINISH, this.handler_tweenComplete, false, int.MAX_VALUE);
    tween.start();
}
 
private function handler_tweenComplete(event:Event):void {
    const tween:Tween = event.target as Tween;
    delete this._tweens[tween];
    //this._tweens.splice(this._tweens.indexOf(tween), 1);
}


Kolyunya 17.10.2011 18:22

Цитата:

Сообщение от КорДум (Сообщение 1039777)
Код AS3:

private var _tween:Tween;
...
_tween = new Tween( ... );

В случае с кучей твинов нужен массив или вектор.

Спасибо! Сделал переменную класса - массив и в него записываю твины.
Все работает.


Часовой пояс GMT +4, время: 17:51.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.