作者heavenbetula (綠草)
看板Flash
標題[問題]Loader讀取另一個swf檔的物件層級關係
時間Sun Aug 24 15:02:18 2014
今天我有一個a的swf檔,裡頭有一個影片片段(名稱A_mc)
以及有一個Loader(名稱loaderA)去讀取b的swf檔
而我b的swf檔中,有一個btn按鈕,也有一個Loader(名稱loaderB)去讀取jpg檔
當我b swf中的這顆按鈕按下時,會將讀到的jpg檔,放到a swf檔中的A_mc
並且
其中,b swf中按鈕事件:
MovieClip(root.parent.root).A_mc.addchild(loaderB);
我的問題是:
第一個root是指向b swf的主時間軸吧,那root.parent是指向讀取它的loaderA嗎?
還是就直接指向a swf的主時間軸?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.228.73.62
※ 文章網址: http://webptt.com/m.aspx?n=bbs/Flash/M.1408863740.A.137.html
1F:推 KawasumiMai: 你可以trace(root) trace(parent) 08/24 23:25
2F:→ KawasumiMai: 還有trace(parent.root)慢慢看她是什麼東西 08/24 23:25
3F:→ heavenbetula: 可是在b.swf檔怎麼parent也parent不到a.swf呀 08/25 22:06
4F:→ heavenbetula: 然後我在a.swf中也trace不到b.swf中的東西啊 08/25 22:07
5F:推 KawasumiMai: function onLoaded(e:Event){ 08/27 15:26
6F:→ KawasumiMai: e.currentTarget.content.(b的變數或函式) 08/27 15:26
7F:→ KawasumiMai: } 08/27 15:26
8F:→ KawasumiMai: 這樣可以呼叫b裡面的東西 08/27 15:28
9F:→ KawasumiMai: 你可以在a和b裡面分別設一個變數做彼此的指向 08/27 15:28
10F:→ KawasumiMai: 這樣一來就可以方便呼叫 08/27 15:29
感謝K大!測試後發現第一個root果然是指向b swf的主時間軸,而root.parent是指向
讀取它的loaderA,root.parent.root才是指向a swf的主時間軸,但是我還有一個疑問
那就是為什麼 MovieClip(root.parent.root).A_mc.addchild(loaderB);
改成 MovieClip(parent.root).A_mc.addchild(loaderB); 也可以呢?
既然parent.root指向的是loaderA,那這樣loaderA.A_mc不是照理沒辦法這麼做嗎?
※ 編輯: heavenbetula (36.231.160.242), 09/02/2014 23:06:40
※ 編輯: heavenbetula (36.231.160.242), 09/02/2014 23:07:54
11F:推 KawasumiMai: parent才是loaderA,parent.root就是loaderA的root 09/03 10:45
我想我知道我哪裡有問題了,我一直將root.parent.root看的順序由右往左看...
然後在此對於b swf而言,root.parent與parent都是指向loaderA
※ 編輯: heavenbetula (61.231.11.41), 09/03/2014 20:28:07
12F:→ KawasumiMai: 你把"."翻譯作"的"就不會搞錯了 09/03 20:53
13F:→ KawasumiMai: 而root是根,parent是相對的上一層 09/03 20:53
14F:→ KawasumiMai: 所以在最上層呼叫root等於自身,parent自然是一樣的 09/03 20:53
15F:→ KawasumiMai: 如果你在b.swf內的元件內側呼叫parent.root 09/03 20:54
16F:→ KawasumiMai: 因為parent是上一層,parent.root只會是b.swf的根 09/03 20:54
17F:→ heavenbetula: 又長知識了,感謝K大! 09/04 19:56