Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблема с setTimeout (http://www.flasher.ru/forum/showthread.php?t=137613)

incvizitor 17.03.2010 23:09

Проблема с setTimeout
 
короче говоря:

вот так всё работает:

Код AS3:

t2 = new Tween(obj1, "distance", null, 300, 5, 5.5, true);
obj1.visible=true;

а вот так твин просто не запускается, но объект становится видимым, значит в timeOut всё же заходит:

Код AS3:

_t=setTimeout(function():void{t2 = new Tween(obj1, "distance", null, 300, 5, 5.5, true);
obj1.visible=true;},3000);


wvxvw 17.03.2010 23:31

1. Никогда не используйте анонимные функции.
2. Не используйте setTimeout - используйте Timer. setTimeout там просто для красоты, чтобы соответствовать какой-то никому теперь не нужной бумажке.

incvizitor 17.03.2010 23:45

Ну допустим с Timer соглашусь, что может там по каким то там параметрам круче чем setTimeout. А почему анонимные функции не подходят??

mikhailk 18.03.2010 00:02

Вы, собственно, вляпались не в таймер, а в уборщик мусора.
Он неровно дышит к твинам и прибивает их раньше, чем они отрабатывают.
Не пользуйтесь штатным твином или честно его прописывайте в коде.
Лучше взять TweenLite.

Анонимные функции не подходят просто потому что не подходят. )))
Хотя и везде встречаются.

incvizitor 18.03.2010 01:02

"не подходят просто потому что не подходят"

с обоснованностью некоторых утверждений не поспоришь.

wvxvw 18.03.2010 01:19

Анонимные функции создаются каждый раз по новой, когда выполняется этот участок кода, изза чего они, как и любой другой объект ссылочного типа не равны сами себе (т.как будут размножаться). Их не удобно дебажить, т.как непонятно откуда лезут ошибки. Если вы ее передадите по ссылке, то есть все шансы, что она где-нибудь "застрянет" и останется засорять память пока флешку не выключат. Кроме всего прочего, эти функции JITятся каждый раз. Т.е. их не компилируют один раз и забывают, а каждый раз по-новой. Кроме того, эти функции являются динамическими объектами с неопределенной областю вызова. Вы никогда не можете предсказать будут ли в функции ошибки типа NPE или нет.

etc 18.03.2010 08:10

Цитата:

Сообщение от wvxvw (Сообщение 893830)
setTimeout там просто для красоты

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


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

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