Форум 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=203392)

Digital 21.09.2013 15:35

Очень частый таймер :)
 
Может ли таймер срабатывать чаще чем раз в миллисекунду?

Wolsh 21.09.2013 16:02

Help:
Цитата:

Частота объекта Timer ограничена 60 кадрами в секунду, то есть задержка меньше 16,6 миллисекунд вызывает проблемы во время выполнения.

WisP 21.09.2013 16:03

Значит ли ваш вопрос, что один раз в мс таймер у вас срабатывает без проблем?

КорДум 21.09.2013 16:03

не чаще, чем раз в 20 мсек.

Digital 21.09.2013 16:08

срабатывает без проблем, а не должно?

Wolsh 21.09.2013 16:35

Интересно было бы узнать, как Вы это определяете.

Digital 21.09.2013 16:56

tarce переменной t, которая каждые 1 миллисекунды делает ++

КорДум 21.09.2013 16:58

Но вы не знаете точно, через сколько таймер срабатывает. t не показывает сколько времени прошло с момента последнего тика таймера.

Wolsh 21.09.2013 19:33

Цитата:

tarce переменной t, которая каждые 1 миллисекунды делает ++
И что Вам мешает вместо (1) написать (0.2) и "проверить"? ))
Ваш тест всего лишь показывает, что таймер тикает. Ну... как бы это его работа, да?
Измерьте реальное время, за которое Ваш миллисекундный таймер натикает то что нужно, ну скажем три секунды. Сколько понадобится реально времени, чтобы таймер тикнул 3000 раз (t стало равно 3000).
Только трейс на каждый тик не делайте, он очень много времени требует.

MikroAcse 21.09.2013 21:52

Вот тут провел совсем странный тест:
Код AS3:

package
{
        import flash.display.*;
        import flash.text.*;
        import flash.utils.*;
 
        public class Main extends Sprite
        {
                private var startTime:int;
 
                public function Main():void
                {
                        if(stage) {
                                init();
                        } else {
                                addEventListener(Event.ADDED_TO_STAGE, init);
                        }
                }
 
                private function init(e:Event = null):void
                {
                        stage.align = StageAlign.TOP_LEFT;
                        stage.scaleMode = StageScaleMode.NO_SCALE;
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        // entry point
                        setTimeout(start, 2000);
                }
 
                public function start():void
                {
 
                        var timer:Timer = new Timer(1, 1000);
                        timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete);
                        timer.start();
                        startTime = getTimer();
                }
 
                private function onComplete(e:TimerEvent):void
                {
                        var delay:int = getTimer() - startTime;
                        var tf:TextField = new TextField();
                        tf.text = "delay: " + delay + "ms";
                        addChild(tf);
                }
        }
}

В итоге, при Timer(1, 1000):
delay: 17130ms

Результат при Timer(10, 100):
delay: 1740ms

Результат при Timer(20, 50):
delay: 1040ms

Результат при Timer(100, 10):
delay: 1165ms

Насколько я понял, идеальным вариантом таймера есть Timer(20, 50).


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

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