ステージ上の全てのmcを一瞬で止める、動かすactionscript

ステージ上のすべてのmcを制御したいと思うことがよくあります。

ボタンを押すと小窓が出て、ちょこまかうごいていたmcが一瞬で止まるという動きです。全てのmcの名前を知っていて、_root.a1_mc.stop();_root.a2_mc.stop();…なんてやってたらキリがないので、こういうやりかたはどうでしょう。

var aArr:Array = new Array();
a_btn.onRelease = function() {
for (var mc in _root) {
aArr.push(mc);
}
for (var i:Number = 1; i < aArr.length; i++) {
eval(aArr[i]).stop();
}
};

配列aArrにステージ上(ここでは_root)のオブジェクトを全て書き出して、stringとして名前を取得。それをaArrの長さだけ(aArr[0]は_rootだから1から)ループさせながらeval(aArr[i])とすればmcを扱っているのと同じ、というわけ。

UNIQLOのサイトみたいに、たくさんのボタンmcがあって、クリックすると商品の説明が表示される仕組みの場合、ひとつの説明を出している間はほかのボタンを押させたくないことがよくあります。そういうときはこれで、_rootじゃなくても必要なmc内のインスタンスを取得して、_enabled=false、と指定してやればいいんじゃないかな。

もっとスマートなやり方があったら教えてください。

すべてのmcを制御(fla形式:flash8)

この記事には、カテゴリ AS2 タグは がつけられています。