1

我创建了一个类,它必须注册到 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 事件不是。知道我在这里可能做错了什么吗?父级将此对象作为子级添加到舞台,所以这不是问题。

4

1 回答 1

2

您必须调用该stage.invalidate()方法来分派Event.RENDER事件。根据AS3 参考Event.RENDER在屏幕渲染之前调度,让所有侦听对象都有机会更新。只有当某些东西改变了它们的参数时,我Event.RENDER才会重绘静态形状。它比重绘每一帧要快。

于 2009-08-20T14:42:55.407 回答