Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   updateAfterEvent Время перерисовки. Замерить. (http://www.flasher.ru/forum/showthread.php?t=135685)

proxiServer 29.01.2010 11:54

updateAfterEvent Время перерисовки. Замерить.
 
Делаю updateAfterEvent. Как мне замерить время от updateAfterEvent до окончание перерисовки? Это возможно вообще?

dmitriev 29.01.2010 12:08

Таймером?

proxiServer 29.01.2010 12:14

dmitriev, ну понятно, что таймером. Рендеринг происходит после завершения работы обработчика. updateAfterEvent - это же обновить после события, а не до или во время. Т.е. таймером внутри обработчика я могу замерить только вызов самой функции, которая ничего не отрисовывает. Или я не прав?

dmitriev 29.01.2010 12:39

Ааа, кажется начинаю понимать что вы хотите…
Если флеш вначале рендерит, а потом переходит на след кадр, то, видимо, нужно замерить время от события до вхождения в след. кадр.

Psycho Tiger 29.01.2010 13:10

Нет. Это будет время одного кадра (то есть 1000/fps) при отсутствии тормозов.

dmitriev 29.01.2010 13:19

Тогда я сдаюсь. =(

proxiServer 29.01.2010 13:56

Psycho Tiger, так а отрисовку можно засечь?

r_r_f_r 29.01.2010 14:10

Код AS3:

package
{
        import flash.display.Graphics;
        import flash.display.Sprite;
        import flash.events.MouseEvent;
        import flash.events.TimerEvent;
        import flash.utils.Timer;
        import flash.utils.getTimer;
 
        public class testRedraw extends Sprite
        {
                protected var _count:uint = 100;
                public function testRedraw()
                {
                        super();
                        init();
                        addEventListener(MouseEvent.MOUSE_MOVE,onMouseMove);
                }
 
                private var _t:uint = 0;
                private function onMouseMove(e:MouseEvent):void
                {
                        var timer:Timer = new Timer(1);
                        timer.addEventListener(TimerEvent.TIMER,onTimer);
                        x = x?0:1;
                        y = y?0:1;
                        e.updateAfterEvent();
                        _t = getTimer();
                        timer.start();
                }
 
                private function onTimer(e:TimerEvent):void
                {
                        trace (getTimer() - _t);
                        var timer:Timer = e.target as Timer;
                        timer.stop();
                        timer.removeEventListener(TimerEvent.TIMER,onTimer);
                }
 
                protected function init():void
                {
                        var i:uint = _count;
                        while (i--)
                        {
                                var sp:Sprite = new Sprite();
                                var gr:Graphics = sp.graphics;
                                gr.beginFill(0,0.2);
                                gr.drawRect(0,0,50,50);
                                gr.endFill();
                                addChild(sp);
                                sp.x = Math.random()*500;
                                sp.y = Math.random()*500;
                        }
                }
        }
}


но точность - супер низкая.


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

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