作者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
1F:推 etrexetrex:这个问题有很多种解法 有一种东西叫做swc 03/07 13:54
2F:→ etrexetrex:大师上次有教过 swc 并不是最佳解 但我上课没认真听 03/07 13:55
3F:→ ticore:我意思是Flash/Flex整合用SWC不是最好的 03/08 02:10
4F:→ ticore:但是就Library来说,SWC是OK的,两者不冲突 03/08 02:11
5F:→ ticore:楼主想要的是动态元件库?执行期动态载入使用的? 03/08 02:13
6F:→ ticore:假如是这样,推荐用SWC,然後将SWC设为External 03/08 02:14
7F:→ ticore:用Loader动态载入RSL 03/08 02:14
8F:→ s9014035:那2者整合用什麽比较好@@(没法去听课的人XDD 03/14 17:41
10F:推 s9014035:感谢ticore哥~ 03/18 18:40