![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+4 06.05.14]
|
В двух словах :
От сервера идут данные, каждый приход данных сопровождается событием, соответсвенно диспатчер их диспатчит Данных может придти ( тоесть дернуться диспатч ) сколько угодно хоть 100 хоть 200... Графическую часть мне нужно было отображать, только после того как последняя пачка данных передана. Как я выкрутился из ситуации поставил таймер... Смотрим : private static var _t:Timer = new Timer(100); _t.addEventListener(TimerEvent.TIMER , checkTime); static private function checkTime(e:TimerEvent):void { if ( _t.currentCount > 1) { _t.reset(); _dispatcher.dispatchEvent(new LiveEvent(LiveEvent.EVENT_ADDED , null )); } } // callback наш на каждую из пачек данных private static function getEvent(sport:String , topic:String, content:String):void { if (!_t.running) _t.start(); sport = UTF8.process(sport); topic = UTF8.process(topic); content = UTF8.process(content); topic = topic.slice(topic.indexOf('|')+1); _dispatcher.dispatchEvent(new LiveEvent(LiveEvent.ADD_EVENT , content )); } При первой пачке данных запускается таймер , то после 200 мс он должен слететь и диспатчится событие EVENT_ADDED. Однако все совсем не так - а вот как : какую бы задержку я не делал хоть 40 мс, итог один - санчала проходят все пачки данных ( напомним их более 100 , тоесть диспатчится 100 раз ) , и только потом таймер отключается и возникает событие EVENT_ADDED. Как так то?
__________________
Марк Tween |
|
|||||
|
.
|
Или данные успевают прийти, или все принимаемые данные приходят в одном потоке. Во втором случае до таймера дело не дойдет, пока не будет отработан весь код кадра. Выяснить можно, измерив разницу времени между приемом первой и последней "пачки".
|
|
|||||
|
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 95
|
тем, что вместо new Timer(100, 1) по документации лучше использовать setTimeout(handler, 100);
|
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
Можно ссылочку на то, где это написано в документации? Мне вот что-то подсказывает, что как раз лучше использовать таймер Видимо тем, что нужно пропустить первый вызов, и отработать на втором Последний раз редактировалось goodguy; 04.11.2011 в 22:05. |
|
|||||
|
Цитата:
__________________
Тут мужик танцует и поёт про флэш |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|