-1

クラスでたくさんのムービークリップを入手しました。これ以外のクラスのすべてのインスタンスに関数を適用するためのより効率的な方法はありますか?

var textArray:Array = [
    interludes.interludeIntro.interludeBegin1,
    interludes.interludeIntro.interludeBegin2,
    interludes.interludeIntro.interludeBegin3,
    interludes.interludeIntro.interludeBegin4,
    interludes.interludeIntro.interludeBegin5,
    interludes.interludeIntro.interludeBegin6,
    interludes.interludeIntro.interludeBegin7, 
    //... ... ...  
    interludes.interludeIntro.interludeBegin15
];                                     
for each (var interludeText:MovieClip in interludeBeginText)
{
   interludeText.alpha = 0 //clear all text first
}

また、何らかの理由でこれは機能しません:

interludes.interludeIntro.alpha = 0;

後で特定のインスタンスを表示しようとしても、そのクラスは永続的に非表示になります。

interludes.interludeIntro.interludeBegin1.alpha = 1;

上記がうまくいかない理由がわかりません。クラスinterludeIntroのすべてのインスタンスを非表示にしたいのですが、特定のインスタンスを後で表示したいと思います。

(ところで、このWebサイトにコードを挿入する方法がわかりません。「コード」を押しても何も起こらないので、不適切なフォーマットはご容赦ください)

4

2 に答える 2

1

何を求めているのかよくわかりませんが、ActionScriptでは、のように名前でプロパティを参照できるので便利ですmyObject["someProperty"]

これを使用すると、プロパティが何らかの命名スキームに従っている場合、プロパティを反復処理できます。たとえば、次のようになります。

for (var i:int = 1; i <= 15; i ++)
    interludes.interludeIntro["interludeBegin" + i].alpha = 0;

これを繰り返して、プロパティをにinterludes.interludeIntro.interludeBegin1設定...15します。alpha0

于 2012-04-15T02:30:56.530 に答える
1

あなたがそれをするとき:

interludes.interludeIntro.alpha = 0;

ムービー クリップそのすべての子を非表示にします。

後でそれを行うとき:

 interludes.interludeIntro.interludeBegin1.alpha = 1;

ムービー クリップを表示しますが、その親がまだ表示されていないため、何も表示されません。解決策は、ムービー クリップをループして、それぞれを非表示/表示にすることです。

// Keep the parent visible at all time
interludes.interludeIntro.alpha = 1;

for (var i:int = 0; i < textArray.length; i++) {
    textArray[i].alpha = 0;
}

// Now this will work:
interludes.interludeIntro.interludeBegin1.alpha = 1;
于 2012-04-15T05:25:46.050 に答える