for文を使ったボタン
for文を使ったボタン
ボタンが2つあり、そのボタンをロールオーバー、ロールアウトでそれぞれ違うmcを動かしたいのですが、うまくいきません。ボタンを「maru1、maru2」として動かしたいmcを「btn1、btn2」とインスタンス名をつけて以下のスクリプトを書きました。
maru1.addEventListener(MouseEvent.ROLL_OVER,onMouse1);
maru1.addEventListener(MouseEvent.ROLL_OUT,outMouse1);
maru1.buttonMode = true;
maru2.addEventListener(MouseEvent.ROLL_OVER,onMouse2);
maru2.addEventListener(MouseEvent.ROLL_OUT,outMouse2);
maru2.buttonMode = true;
function onMouse1(e:MouseEvent):void{
mc_tween = new Tween(btn1, "scaleX", Elastic.easeOut, 0.7, 1, 1, true);
mc_tween.start();
}
function outMouse1(e:MouseEvent):void{
mc_tween = new Tween(btn1, "scaleX", Elastic.easeOut, 1, 0.7, 1, true);
mc_tween.start();
}
function onMouse2(e:MouseEvent):void{
mc_tween = new Tween(btn2, "scaleX", Elastic.easeOut, 0.7, 1, 1, true);
mc_tween.start();
}
function outMouse2(e:MouseEvent):void{
mc_tween = new Tween(btn2, "scaleX", Elastic.easeOut, 1, 0.7, 1, true);
mc_tween.start();
}
これでも動くのですが、ボタンが沢山あった場合にfor文を使ってできないかと考え、ttp://www.oro.co.jp/web/creator/flash/actionscript/soft-button.htmlを参考に
var mc_tween:Tween;
//イベント登録
for(var i:int = 1; i < 3; i++){
this["maru"+i].addEventListener(MouseEvent.ROLL_OVER, rollOverEvent);
this["maru"+i].addEventListener(MouseEvent.ROLL_OUT, rollOutEvent);
this["maru"+i].buttonMode = true;
}
function rollOverEvent(event:Event):void{
var btn:MovieClip = event.target as MovieClip;
mc_tween = new Tween(btn, "scaleX", Elastic.easeOut, btn.scaleX, 1.5, 1, true);
mc_tween = new Tween(btn, "scaleY", Elastic.easeOut, btn.scaleY, 1.5, 1, true);
addChildAt(btn, 5);
}
function rollOutEvent(event:Event):void{
var btn:MovieClip = event.target as MovieClip;
mc_tween = new Tween(btn, "scaleX", Elastic.easeOut, btn.scaleX, 1, 1, true);
mc_tween = new Tween(btn, "scaleY", Elastic.easeOut, btn.scaleY, 1, 1, true);
}
と書いたのですが、上手く行きません。<var btn:MovieClip = event.target as MovieClip;>の部分でどのように「btn1、btn2」を参照したらいいのでしょうか。
作業環境はmacOSX flashCS5 actionscript3です。よろしくお願い致します。
お礼
anyhelp 様 動きました。 eventObj.targetは、実行中mcということですか? いろいろ試してみます。 回答ありがとうございます。