如何从库中动态添加对象?
Posted
技术标签:
【中文标题】如何从库中动态添加对象?【英文标题】:How to dynamically add an Object from Library? 【发布时间】:2012-11-17 01:34:56 【问题描述】:我在库中有一些电影剪辑,我想制作将它们加载到舞台的功能。我的问题是,除了为每个 MovieClip 制作单独的函数之外,我找不到不同的解决方案。我正在寻找类似的东西:
function addAnyClip(name)
//create new object 'name'
stage.addChild(chosenObject);
rest of code
因为它比:
function addClip1()
var mc1:Clip1 = new Clip1;
stage.addChild(mc1);
///rest of code
function addClip2()
var mc1:Clip2 = new Clip2;
stage.addChild(mc2);
///rest of code
function addClip3()
var mc1:Clip3 = new Clip3;
stage.addChild(mc3);
///rest of code
...
【问题讨论】:
【参考方案1】:考虑使用getDefinitionByName
您将执行以下操作:
var mcClass:Class = getDefinitionByName("NameOfClipInLibrary")
然后创建一个类类型为mcClass
的新对象
这里有几个链接可以帮助解释如何使用它... http://www.jesseknowles.com/blog/dynamically_attaching_movieclips_in_as3/
http://www.emanueleferonato.com/2011/03/31/understanding-as3-getdefinitionbyname-for-all-eval-maniacs/
【讨论】:
【参考方案2】:这将巩固您在上面显示的内容:
function addChildOfType(type:Class):void
var mc:type = new type();
stage.addChild(mc);
使用这个只需调用:
addChildOfType(Clip1);
addChildOfType(Clip2);
addChildOfType(Clip3);
编辑:
如果您的库是外部加载的 swf,则 @M. Laing 在如何获得它们方面是正确的。如果您的库是同一个 Flash 文件中的 Flash 库,那么此答案将解决您的问题。
【讨论】:
不客气!快乐的编码..哦,如果你愿意的话,把这个答案标记为你想要的答案!以上是关于如何从库中动态添加对象?的主要内容,如果未能解决你的问题,请参考以下文章