|
|
|||||
Регистрация: Jan 2014
Адрес: Россия, Саратов
Сообщений: 28
|
Вопрос по таймауту: какое время задержки нужно задавать, чтобы метод finalizeAdjust выполнился после всего остального кода в текущем кадре?
Если я правильно понимаю, то любого минимального времени (например 1 млс) будет вполне достаточно. Так как выполнение стэка команд в кадре разрываться не может и команда на выполнение метода finalizeAdjust просто добавится в конец. Заапрувьте или поправьте моё понимание |
|
|||||
не могу ничего внятного по времени сказать
1 млс это все равно те же 16 мс - типа частота системного таймера в винде, например, а в плеере это может быть вообще что угодно.., ну и потом насколько это принципиально - обновится через 10 или 40 мс ? |
|
|||||
Регистрация: May 2010
Сообщений: 543
|
Это все-таки неверный подход, по моему мнению. Если есть зависимость от смены кадров - нужно работать с этим событием, а не придумывать костыли в виде:
Цитата:
Можно сделать какой-нибудь глобальный броадкастер, как, например, здесь
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с) |
|
|||||
Регистрация: Jan 2014
Адрес: Россия, Саратов
Сообщений: 28
|
я просто хочу понять как работает этот таймаут.
если, например, я укажу setTimeout(finalizeAdjust, 20);, а время выполнения последующего кода в этом кадре составит 60 мс, то метод finalizeAdjust выполнится через 60? или через 20 мс выполнение стэка команд в кадре прервется и выполнится метод finalizeAdjust? Добавлено через 11 минут carrotoff, собственно сейчас почти так и сделал. Слушаю событие смены кадров через глобальный статический инстанс Последний раз редактировалось myakushka; 11.02.2014 в 18:12. |
|
|||||
Lorem ipsum
|
Ага.
Неа.
__________________
Поймай яблоко 2! |
|
|||||
информация к размышлению
package { import flash.display.*; import flash.events.*; import flash.text.*; import flash.utils.*; [SWF( frameRate="40")] public class Test extends Sprite { private var log:String = ""; private var id:int; public function Test() { addEventListener(Event.ENTER_FRAME, enterFrame); } private function enterFrame(e:Event):void { _trace("enterFrame \t" + new Date().getMilliseconds()); if (!id)start(); } private function start():void { _trace("start \t\t\t" + time()); id = setTimeout(traceTime, 10, 10); setTimeout(traceTime, 40, 40); setTimeout(traceTime, 80, 80); setTimeout(traceTime, 160, 160); setTimeout(stop, 400); // если нет вычислений в кадре, то таймауты разбредутся по enterFrame // если нагрузить, то все просроченные таймауты выполнятся до ближайшего enterFrame // for (var i:int = 0; i <1e7 ; i++) if(!(i%1e6))_trace( "loop \t\t\t"+ time() ); } private function stop():void { removeEventListener(Event.ENTER_FRAME, enterFrame); var tf:TextField = new TextField(); tf.autoSize = TextFieldAutoSize.LEFT; tf.text = log; addChild(tf); } private function _trace(s:String):void { log += s + "\n"; } private function traceTime(val:Number):void { _trace("timeOut_" + val + " \t" + time()); } private function time():Number { return new Date().getMilliseconds(); } } } |
|
|||||
Регистрация: Jan 2014
Адрес: Россия, Саратов
Сообщений: 28
|
всем спасибо
|
Часовой пояс GMT +4, время: 18:43. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|