3

我在库中有一些电影剪辑,我想制作将它们加载到舞台的功能。我的问题是,除了为每个 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
}
...
4

2 回答 2

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/

于 2012-11-29T02:57:58.673 回答
1

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

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

使用这个只需调用:

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

编辑:

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

于 2012-11-29T03:00:30.787 回答