如何从库中动态添加对象?

时间:2012-11-29 02:40:49

标签: actionscript-3 flash movieclip

我在Library中有很少的MovieClip,我想制作将它们加载到舞台中的功能。我的问题是我找不到与为每个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
}
...

2 个答案:

答案 0 :(得分:5)

使用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/

答案 1 :(得分:1)

这将巩固您在上面显示的内容:

function addChildOfType(type:Class):void{
    var mc:type = new type();
    stage.addChild(mc);
}

使用此电话:

addChildOfType(Clip1);
addChildOfType(Clip2);
addChildOfType(Clip3);

编辑:

如果您的库是外部加载的swf,那么@M。 Laing在如何获得它们方面是正确的。如果您的库是同一个Flash文件中的Flash库,那么这个答案将会解决您的问题。