[問題] 有關外部元件庫取用的實作

看板Flash作者 (魔物を討つ者)時間13年前 (2012/03/07 12:22), 編輯推噓3(307)
留言10則, 3人參與, 最新討論串1/1
目前的情況 有個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

03/07 13:54, , 1F
這個問題有很多種解法 有一種東西叫做swc
03/07 13:54, 1F

03/07 13:55, , 2F
大師上次有教過 swc 並不是最佳解 但我上課沒認真聽
03/07 13:55, 2F

03/08 02:10, , 3F
我意思是Flash/Flex整合用SWC不是最好的
03/08 02:10, 3F

03/08 02:11, , 4F
但是就Library來說,SWC是OK的,兩者不衝突
03/08 02:11, 4F

03/08 02:13, , 5F
樓主想要的是動態元件庫?執行期動態載入使用的?
03/08 02:13, 5F

03/08 02:14, , 6F
假如是這樣,推薦用SWC,然後將SWC設為External
03/08 02:14, 6F

03/08 02:14, , 7F
用Loader動態載入RSL
03/08 02:14, 7F

03/14 17:41, , 8F
那2者整合用什麼比較好@@(沒法去聽課的人XDD
03/14 17:41, 8F


03/18 18:40, , 10F
感謝ticore哥~
03/18 18:40, 10F
文章代碼(AID): #1FLk9vDU (Flash)
文章代碼(AID): #1FLk9vDU (Flash)