我正在关注教程,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);
}
}
}