Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 为什么不调度Event.RENDER?_Actionscript 3_Events_Flex3_Rendering_Stage - Fatal编程技术网

Actionscript 3 为什么不调度Event.RENDER?

Actionscript 3 为什么不调度Event.RENDER?,actionscript-3,events,flex3,rendering,stage,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() { addEventListene

我创建了一个类,它必须注册到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_阶段事件。但是,Event.RENDER事件不是。知道我做错了什么吗?父对象正在将此对象作为子对象添加到stage,因此这不会是问题。

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

你确定添加stage.invalidate()后会调用它吗?我根本不会调用stage.invalidate()。。我应该吗?是的,看这里,是的,这个一开始有点让人困惑。把它想象成在渲染之前。如果要查找常规更新事件,请查看“输入帧”我要查找的是“仅在渲染之前”事件。但是,我不明白如何将它与invalidate方法一起使用。Event.RENDER是不可靠的。例如,当舞台调整大小时,它不会像应该的那样频繁地触发。如果拖动独立Flash Player的窗口角以调整其大小,则在调整舞台大小时,不会在每一帧调用Event.RENDER,即使Event.resize将在每一帧调度,但调整大小处理程序会调用stage.invalidate,更新对象位置,并且播放器会在其新位置渲染它们。。。但是缺少许多Event.RENDER事件。这使得Event.RENDER不可靠且无用。其他人可以确认此行为吗?此注释本身就是一个很好的问题:“当舞台调整大小时Event.RENDER是否已调度?”包括您的证据,并查看是您的代码还是AS3本身有问题。一定要把它表达成一个问题,而不是一个陈述。