1,dispatchEvent事件
这个方法实质上就是监听事件,只不过在这里是对多个界面之间的监听调用,从而实现在一个类(方法)中从另一个类(方法)调用类或方法,达到简便的目的。
例如:
在A中有方法:
private var function Listen():void{
dispatchEvent(new Event("dosomething"));
}
在B中的方法:
private var function init():void{
var a:A = new A();
a.addEventListener("dosomething", DoSomething);
}
private var function DoSomething(evt:Event):void{
.................
}
这样,当在A中执行到Listen时,就会跳转到B中去做DoSomething了
2,PopUpManager中的removePopUp
PopUpManager.removePopUp(this);是销毁本界面的,可是销毁后会失去对主界面的焦点,跟踪removePopUp,查看源代码,发现有如下语句:
PopUpManagerImpl.as中的:
701,702行
if (popUp is IFocusManagerContainer)
sm.removeFocusManager(IFocusManagerContainer(popUp));
705行:
popUp.removeEventListener(Event.REMOVED, popupRemovedHandler);
估计是在销毁的时候,同时也把父焦点也销毁了,如果不想销毁父焦点,这里是为了移除此界面后重新响应父界面的事件,则就要把PopUpManager.removePopUp(this);修改为this.visable = false;
这样,界面(stage)就从新获得了焦点,否则,需要重新用鼠标点击一下父界面才会获得焦点