Flash加載swf后互相調用函數、變量
2010-7-11 17:33:41
Flash加載swf后互相調用函數、變量
假定加載其它swf文件的swf為父swf,被加載的swf為子swf。
情況1:父swf調用子swf中的函數、變量。
使用Loader.contentLoaderInfo的監聽器。具體方法:
1、轉為EventDispatcher并添加監聽器,監聽完成事件。
EventDispatcher(Loader.contentLoaderInfo).addEventListener(Event.Complete,loaded);
2、設計完成事件處理方法loaded
function loaded(e:Event):void{
//假定子swf中有函數sayHi(),那么可以這樣調用:
e.target.content.sayHi();
}
由于是在父swf中執行方法,也可以設計接受父對象的方法,把父對象的引用傳給子swf。這樣子swf也就能夠執行父swf中的函數,獲取其變量了。參考:http://www.68design.net/Web-Guide/Flash/50014-1.html
情況2:子swf調用父swf中的函數和變量。
被加載的子對象一般被保存在Loader對象中。而Loader對象又通常被加到父swf中。這樣我們就可以通過this.parent一層一層取得父對象了。前提是Loader對象要被addChild到父對象中。例如:
假如父swf中有變量var name:String = "ljf",并且通過Loader對象myLoader加載子swf,并執行了addChild(myLoader),則,我們可以在子swf中這樣獲取到name值:
Object(this.parent.parent).name
這樣做要特別小心。因為我們無法控制父對象加載子對象的方式。也許,有的人會用一個MovieClip來加載Loader對象,或者,加載對象之后,沒有把對象addChild加入到父swf的容器結構中。那么用this.parent.parent獲取到的,可能就是null值了。
作者: 林劍鋒 , 分類: Flash , 評論: 0
posted on 2010-11-26 08:51 aiaiwoo 閱讀(1370) 評論(0) 編輯 收藏 所屬分類: AC3/FLEX