2012-04-15 14 views
-1

私はクラスでムービークリップのトンを得ました。これ以外のクラスのすべてのインスタンスに関数を適用するより効率的な方法はありますか?またActionscript 3.0クラスのインスタンスをすべて取得しますか?

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クラスのすべてのインスタンスを非表示にしたいが、後で特定のインスタンスを表示する必要がある。

(ところで、私は何かを、そんなに悪いの書式を容赦しない「コード」を押すと、このウェブサイトにコードを挿入する方法は考えている)

+1

http://stackoverflow.com/editing-helpを読んでください。 – spender

+4

'interludes.interludeIntro.alpha = 0;'の動作は、全ての子がアルファを親のアルファで乗算しているので、期待されます。したがって、コンテナの 'alpha'を' 0'に設定すると、全ての子は 'alpha'の有効な' alpha'も持ちます。 – Torious

答えて

1

私はあなたが求めているものは本当にわからないんだけど、 ActionScriptでは、​​のような名前でプロパティを参照できます。

彼らはいくつかの命名規則に従っている場合、あなたがそうたとえば、プロパティを反復処理することができます、という使い方:...15てそれinterludes.interludeIntro.interludeBegin1を反復

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

0にそのalphaプロパティを設定します。

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; 
関連する問題