Event.ADDED_TO_STAGE如何正常工作?

时间:2014-12-07 23:14:19

标签: actionscript-3 events

我正在关注教程,Event.ADDED_TO_STAGE让我感到困惑。我以为我理解它是如何工作的,但显然不是。我理解在Main()中,我正在检查stage是否已初始化。如果是,我添加一个事件监听器来检查是否已调用addChild(),从而触发事件监听器运行init()

我发现这非常令人困惑,因为它似乎是一个圆形的鸡/蛋情况。如果加载了舞台,那么它将添加事件监听器。但是事件监听器不会在使用addchild()将某些内容添加到舞台之前触发,那么init()将如何运行?

我也不理解else中的Main条款;当然,如果阶段不可用,运行init()并尝试运行addchild()会导致错误,因为暂存的子阶段不存在?

因此,除非else子句是第一个运行的子句,否则我不理解init()如何被调用开始,但如果else子句已执行,为什么addChild()没有抛出错误,因为舞台尚未初始化?

我理解Event.ADDED_TO_STAGE事件的作用,但在这种特殊情况下,我并不完全明白它是如何做到的。

我很难理解这里的确切过程。如果有人可以一步一步地解释这个过程,我认为这有助于我理解这个代码是如何工作的,因为它让我感到有点难过。

package 
{
    import flash.display.Sprite;
    import flash.events.Event;
    import com.Element;

    public class Main extends Sprite
    {
        public function Main()
        {
            if(stage)
                addEventListener(Event.ADDED_TO_STAGE, init);
            else
                init();
        }

        private function init(e:Event = null):void
        {
            var testElement:Element = new Element(0x00AAFF, 1, 10, 10);
            testElement.x = 50;
            testElement.y = 50;
            this.addChild(testElement);

        }

    }
}

0 个答案:

没有答案