Есть ли способ измерить среднее время выполнения моего кода и рендеринга каждого кадра для моего приложения Flex?Более конкретно, я знаю, как использовать getTimer (), но я не уверен, какие события мне следует прослушивать, чтобы сделать это.Я читал этот пост и не уверен, как вы выясните, сколько времени потребовался фактический рендеринг (может показаться, что это может быть время между срабатыванием события RENDER и следующим срабатыванием события ENTER_FRAME, ноЯ не уверен).Кроме того, я не совсем уверен, где находится код пользователя или нужно ли мне беспокоиться о EXIT_FRAME и FRAME_CONSTRUCTED.
Любая помощь приветствуется!
РЕДАКТИРОВАТЬ ----
вот фрагмент кода, показывающий основные события для каждого повторения второго кадра в супер простом приложении Flex,Я пытаюсь выяснить, существует ли четкая связь между частями «пользовательского кода» и «рендеринга» классической беговой дорожки Flex и интервалами между четырьмя основными сигналами, по которым я отслеживаю.
код:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
import flash.utils.getTimer;
public var t:Timer;
protected function button1_clickHandler(event:MouseEvent):void
{
t = new Timer(40, 50);
t.addEventListener(TimerEvent.TIMER, handleTimeTick);
t.addEventListener(TimerEvent.TIMER_COMPLETE, timerDone);
addEventListener(Event.RENDER, application1_renderHandler);
addEventListener(Event.ENTER_FRAME, application1_enterFrameHandler);
addEventListener(Event.EXIT_FRAME, application1_exitFrameHandler);
addEventListener(Event.FRAME_CONSTRUCTED, application1_frameConstructedHandler);
t.start();
}
protected function handleTimeTick(e:TimerEvent):void
{
shape.x += 5;
}
protected function timerDone(e:TimerEvent):void
{
t.stop();
t.removeEventListener(TimerEvent.TIMER, handleTimeTick);
t.removeEventListener(TimerEvent.TIMER_COMPLETE, timerDone);
removeEventListener(Event.RENDER, application1_renderHandler);
removeEventListener(Event.ENTER_FRAME, application1_enterFrameHandler);
removeEventListener(Event.EXIT_FRAME, application1_exitFrameHandler);
removeEventListener(Event.FRAME_CONSTRUCTED, application1_frameConstructedHandler);
}
protected function application1_renderHandler(event:Event):void
{
trace("render fire", getTimer());
}
protected function application1_enterFrameHandler(event:Event):void
{
trace("enter frame fire", getTimer());
}
protected function application1_exitFrameHandler(event:Event):void
{
trace("exit frame fire", getTimer());
}
protected function application1_frameConstructedHandler(event:Event):void
{
trace("frame constructed fire", getTimer());
}
]]>
</fx:Script>
<s:Rect id="shape" x="0" y="0" height="20" width="20">
<s:fill>
<s:SolidColor color="0xff0000"/>
</s:fill>
</s:Rect>
<s:Button x="10" y="100" click="button1_clickHandler(event)" label="go"/>
</s:Application>