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です。よろしくお願い致します。
お礼
H240S18B73 様 ありがとうございます。 教えて頂いた通りに書いてみましたが、ボタンを押しても反応せず btn_start.addEventListener(MouseEvent.CLICK,main_start); を一番上に足すと、反応しました。 >TweenクラスはENTER_FRAMEのリスナーで >使うようなもんではないと思いますよ あるサイトを参考にして、作ったのですがスマートな使い方では ないのですね? 本やサイトを見て勉強しておりますが、根本的な書き方や考え方が まだ理解出来ておらず、簡単なTweenクラスからと思っていたのですが なかなか難しいです(>_<)