0

ある状況を想像してみてください: インスタンス名が MC1a、MC2a、MC3a .. MC100a のムービークリップが 100 個あります。

MC1a.visible = false; ... MC100a.visible = false;

この方法ではコードが非常に重くなり、正しい方法ではないと思うからです。だから私はそのようなものになる可能性のある方法があると考えていました:

MC*a.visible = false;

物乞いに「MC」、エンディングに「a」を含むすべてのムービークリップが消えますか? 多分配列で何か?

4

3 に答える 3

3

これらすべてのムービークリップの親がコンテナと呼ばれる場合、次のことができます。

container["MC"+i+"a"].visible=false

これは、ActionScriptのスクリプトの性質によるものです。

あなたの特定のケースのためにあなたはすることができます

for(i=0;i<100;i++){
    container["MC"+i+"a"].visible=false;
}

0から100までのすべての数値がない場合は、次のようにすることができます。

for each(MovieClip mc in container){
    name=mc.name;
    if(name.substring(0,2)=="MC" && name.substring(-1)=="a"){
        mc.visible=false;
    }
}

(これは、オンザフライで記述されたテストされていない擬似コードです)

于 2012-09-13T13:12:28.953 に答える
0

すべての子が myContainer と呼ばれる同じコンテナーに追加されると仮定します。

var container:MovieClip = myContainer;
var i:uint = container.numChildren;
while (i--)
{
    var child:* = container.getChildAt(i);
    child.visible = false;
}
于 2012-09-13T15:24:25.677 に答える
0

これを実現する方法はいくつかあります。まず、共通の親となるスプライト コンテナを作成し、その可視性を変更します。これは柔軟な方法ではありません。たとえば、ムービー クリップがステージの 2 つの異なる領域に配置されていて、何らかの方法で対話する必要がある場合、それらすべてを表示リストの 1 つの親の下に置くことができない場合があります。2 番目の方法は、インスタンス化の時点で 100 個のムービー クリップから配列を作成し (可能であればもちろん)、配列を反復処理してループ内で可視性を割り当てることです。

基本的に、構造を形成する必要のあるオブジェクトがある場合は、まずそれらを何らかの方法でリンクしてから、それらの可視性やその他のパラメーターをすべて一緒に変更することを検討してください。一度にすべてを移動する必要がある場合、または非表示にする必要がある場合は、コンテナー アプローチの方が適しています。まったく同じではないが類似したアクションを実行する必要がある場合 (たとえば、ムービー クリップとしてモンスターがあり、一緒に移動する必要があるが、それぞれに独自の方向と速度があるとします)、配列が必要です。

考慮すべきもう 1 つのことは、「MCbig_a」のような名前のムービー クリップがある場合、つまり、条件に適合しているが、非表示にしたい MC のグループに正確に属していない場合は、予防策を講じる必要があります。そのような出来事について。

于 2012-09-13T13:20:00.003 に答える