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 に答える