AS2

配列の要素から番号を返す関数

こんなんでいいのかな。車輪の再開発っぽいことになってしまう気がする。。

function getArrNum(target:String, array:Array):String {
for (var prop in array) {
if (target == array[prop]) {
return prop;
}
}
}

↑が関数で、使う場合はこんな感じ。

var a:Array = new Array("aaa", "bbb", "ccc");
trace(a); //結果:aaa,bbb,ccc
trace(a[0]);//結果:aaa
trace(getArrNum("bbb", a));//結果:1

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

ステージ上の全ての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、と指定してやればいいんじゃないかな。

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

AS2で複数のボタンの管理を楽にする

複数のボタン管理を楽にする方法。
ステージにbtn1_mc、btn2_mc、btn3_mc…と、ボタンMCを置きます。
クリックするとまぁ、似たようなことをするボタンです。たとえば外部ファイルをloadMovieしたりね。
そんとき、ボタンにそれぞれonReleaseとか書いているのがメンドイ場合があります。3個くらいならともかく、ステージに100個もボタンがあったらそのどれもにいちいちonReleaseしてらんない。
というときはこのクラスを当てると便利です。