作者KawasumiMai (魔物を討つ者)
看板Flash
標題[問題] 有關外部元件庫取用的實作
時間Wed Mar 7 12:22:14 2012
目前的情況
有個main.fla
有個library.fla
然後main.fla要去使用library.fla的元件
==
情況1
==
main.fla
var loader:Loader=new Loader()
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaded)
loader.load(new URLRequest("library.swf"))
addChild(loader)
function loaded(e:Event){
e.currentTarget.content.mc.gotoAndPlay(1)
}
--
library.fla
將所需MovieClip放到舞台上並且命名為mc
--
這樣可以在main.fla操控在library.swf內的mc
==
情況二
==
main.fla
var mc
var loader:Loader=new Loader()
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaded)
loader.load(new URLRequest("library.swf"))
addChild(loader)
function loaded(e:Event){
mc=e.currentTarget.content.add_mc()
}
--
library.fla
將元件庫內所需MovieClip命名為mc
function add_mc(){
var obj=new mc
with(obj){
x=100
y=100
}
addChild(obj)
return(obj)
}
--
這樣一來可以操控library新增元件
並且將其絕對位置回傳給main.swf
之後就算在main.swf呼叫mc.x+=100
也可以針對loader內的library.swf進行操控
==
現在的問題是目前library.swf只有一個元件要呼叫
如果元件一多
使用同一個function add_mc
新增不同的元件時務必要有傳入值
1.使用數字作辨認:
可能會因為自己搞混而在某一天鬼打牆
2.使用字串作辨認:
每次增加新的元件庫元件就得多寫一行switch
而且如果設定
"mc播放完畢後會自砍並且呼叫main.swf進入下一個程序"
那麼關於傳回值的字串勢必又是一串switch
3.直接使用元件庫名稱作確認
例如e.currentTarget.content.add_mc(mc_target)
(mc_target是library的元件庫識別名稱)
那麼因為main.swf沒有mc_target這個名稱
出現無法辨識而錯誤
就統一管理library來說
使用第二種方法呼叫載入應該是比較正確的方法
但是關於辨識的過程就會需要來回修改兩個fla
如果使用第一種方法
用的是同一個library.swf的話
那麼需要將所有物件先放到舞台上並且分別命名元件實體名稱
以供備用
如果不希望因此造成混雜
那麼可能會需要在main.fla裡面宣告多個loader
並且每個元件製作一個swf然後放到舞台上命名
然後針對每個loader1.content.mc.gotoAndPlay(1)
loader2.content.mc.stop()
...
但是好處是幾乎只要修改main.fla
元件庫只要新增一個swf並且命名為mc之後就可以放著不管了
而且第一種方法可以做到分批載入
第二種方法則是一次將整個所需檔案載入
==
不知道各位認為哪種方法比較好
還是有更好的方法
原本想將第一種方法改良成第二種方法
統一成同一個元件庫檔
結果卻發現意外的麻煩
使用第一種方法還比較直覺的辨識名稱
--
「...けっ...けっこん...祐一と...結婚したい...」
「真琴...ごめんねぇ...やっばり無理です...」
「ど...どうして?」
「だ...だから...それならば...じゅ...ジュ
ウカ
ンってなるでしょう?」
「...もう...祐一のエッチ!!!」 Kanon 01/06 イベント 「俺のペット」
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.208.31
推 etrexetrex:這個問題有很多種解法 有一種東西叫做swc 03/07 13:54
→ etrexetrex:大師上次有教過 swc 並不是最佳解 但我上課沒認真聽 03/07 13:55
→ ticore:我意思是Flash/Flex整合用SWC不是最好的 03/08 02:10
→ ticore:但是就Library來說,SWC是OK的,兩者不衝突 03/08 02:11
→ ticore:樓主想要的是動態元件庫?執行期動態載入使用的? 03/08 02:13
→ ticore:假如是這樣,推薦用SWC,然後將SWC設為External 03/08 02:14
→ ticore:用Loader動態載入RSL 03/08 02:14
→ s9014035:那2者整合用什麼比較好@@(沒法去聽課的人XDD 03/14 17:41
推 s9014035:感謝ticore哥~ 03/18 18:40