为什么不发送Event.RENDER?

时间:2009-08-19 11:35:39

标签: actionscript-3 events flex3 rendering stage

我创建了一个类,它必须注册到Event.RENDER事件,以便它知道何时渲染舞台。我的代码的简化版本如下所示:

package
{
   import flash.events.Event;
   import flash.display.Sprite;
   public final class Test extends Sprite
   {
        public final function Test()
        {
            addEventListener(Event.ADDED_TO_STAGE,added,false,0,true);
        }

        private final function added(event:Event):void
        {
            trace("added to stage");
            stage.addEventListener(Event.RENDER, renderHandler,false,0,true);
        }

        private final function renderHandler(event:Event):void
        {
            trace("Event.RENDER dispatched!");
        }
   }
}

正在调度Event.ADDED_TO_STAGE事件。但是,Event.RENDER事件不是。知道我在这里做错了什么吗?父级将此对象作为子级添加到舞台中,因此不会出现问题。

1 个答案:

答案 0 :(得分:2)

您必须调用stage.invalidate()方法来发送Event.RENDER事件。根据{{​​3}},在呈现屏幕之前调度Event.RENDER,为所有侦听对象提供更新的机会。我已经使用Event.RENDER仅在某些内容更改了参数时重绘静态形状。它比重绘每一帧都快。