0

ステージにロードしたいすべてのムービークリップを配列にする方法はありますか?

if (selectDiffText.text == "Collection 1 Easy")
    {
        var c1_easy:cartoonEasy = new cartoonEasy();
        addChild(c1_easy);
        c1_easy.x = 412;
        c1_easy.y = 400;
        TweenMax.from(c1_easy, 0.5, {alpha:0, ease:Expo.easeOut});
    }
    else if (selectDiffText.text == "Collection 1 Medium")
    {
        var c1_medium:cartoonMedium = new cartoonMedium();
        addChild(c1_medium);
        c1_medium.x = 412;
        c1_medium.y = 400;
        TweenMax.from(c1_medium, 0.5, {alpha:0, ease:Expo.easeOut});
    }
    else if (selectDiffText.text == "Collection 1 Hard")
    {
        var c1_hard:cartoonHard = new cartoonHard();
        addChild(c1_hard);
        c1_hard.x = 412;
        c1_hard.y = 400;
        TweenMax.from(c1_hard, 0.5, {alpha:0, ease:Expo.easeOut});
    }
else{trace("ERROR!")}

今、ライブラリには、cartoonEasy、cartoonMedium、cartoonHard の 3 つのムービークリップがあります。それらの 1 つをステージに追加しますが、異なる変数を使用します。1つの変数のみを使用してそれらを作成できる方法ですか? 配列を使用していますか?

変数を 1 つだけ使用すると、ライブラリから呼び出したムービークリップの 1 つ内のオブジェクトを簡単に制御できるためです。

私が考えているのは次のようなものです:

var c1_all:cartoonAll = new cartoonEasy() = new cartoonMedium() = new cartoonHard() 
4

2 に答える 2

1
function addCartoon( obj:* ):void{ // might change * to DisplayObject
    addChild(obj);
    obj.x = 412;
    obj.y = 400;
    TweenMax.from(obj, 0.5, {alpha:0, ease:Expo.easeOut});
}

var obj:*;
switch (selectDiffText.text ){ // use switch since it is clean code
  case "Collection 1 Easy":
    obj = new cartoonEasy();
  case "Collection 1 Medium":
    obj = new cartoonMedium();
  case "Collection 1 Hard":
    obj = new cartoonHard();
  default:
    trace("ERROR!")
}
if( obj ){
  addCartoon( obj );
}






// manipulating obj will change the item on stage.
obj.x = 500;
于 2012-04-11T21:35:20.473 に答える
0

実際、配列を使用できます。

var c1All:Array = [
    new cartoonEasy(),
    new cartoonMedium(),
    new cartoonHard()
];

これらすべてのオブジェクトにコードを適用するには、次のようにします。

for each(var i:MovieClip in c1All)
{
    addChild(i);
    i.x = 412;
    i.y = 400;
    TweenMax.from(i, 0.5, {alpha:0, ease:Expo.easeOut});
}

PSthrow new Error("message");ではなく使用することをお勧めしtrace("error")ます。

于 2012-04-11T05:05:27.090 に答える