作者jeaby (潔比)
看板Flash
標題Re: [問題] 抓外部AS檔變數問題
時間Wed Jul 20 17:16:33 2011
※ 引述《fake01 (ya da)》之銘言:
: 請問如何抓取匯入外部AS檔的變數?
: var Tlke:URLRequest = new URLRequest("MOVE_GAME/NewGame.swf");
: var Tlkeloader:Loader = new Loader();
: Tlkeloader.load(Tlke);
: addChild(Tlkeloader);
這問題我剛好最近遇到
而且你要問的應該是怎麼抓取匯入外部 "SWF" 的變數吧?
首先給 Tlkeloader 加個 event
Tlkeloader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);
private function onLoaded(e:Event):void
{
var childMC:MoiveClip = e.currentTarget.content as MovieClip;
// 這時候childMC就等於載入的.swf了
// 然後要怎麼抓變數,call function都沒問題了!
childMC.roleName; // 抓變數
childMC.run(); // call function
}
--------------
這邊是 NewGame.swf 的內容
看要寫在 .as 或是 frame 都可以
假設寫在 frame
var roleName:String = "jeaby";
function run():void
{
// do something
}
---------------
補充一下你前面文章的問題
假設你要在 NewGame.swf 中的某個按鈕remove自己
//用剛剛上面的 run
function run():void
{
parent.removeChild(this);
// 但是實際跑了之後會跑出錯誤說loader沒有removeChild這個函數
}
所以要修改"this"的型態
回到最上面的 onLoaded
private function onLoaded(e:Event):void
{
var childMC:MoiveClip = e.currentTarget.content as MovieClip;
// .swf 載入完成後再addChild
// addChild(Tlkeloader) 所以這行也不用加了;
addChild(childMC);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.104.252.179
推 fake01:請問沒給路徑怎麼載入swf 第一段的程式碼內的function 07/21 11:52
→ fake01:不會執行耶 07/21 11:52
推 fake01:了解,如果我要抓child的as檔 07/21 12:30
→ fake01:變數? 該如何做 07/21 12:30
→ jeaby:一樣在child.as給個變數 public var abc:string = "abc"; 07/21 12:38
→ jeaby:main.as裡在去抓 childmc.abc 就可以了 07/21 12:38
※ 編輯: jeaby 來自: 59.104.252.179 (07/21 12:39)
推 fake01:我新增child.as 可以點擊按鈕刪除自己 07/21 13:12
→ fake01:但在main.fla執行會出錯 07/21 13:13
→ fake01:TypeError: Error #2007: 參數 child 不能是 Null。 07/21 13:14
推 fake01:trace(childmc); 等於 NULL 07/21 13:18
推 fake01:已經了解 謝謝高手J 加入this.addchild(...); 07/21 13:27
→ fake01:不對,後來發現還是錯 會出現 Child 不能是null 07/21 13:58