• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ActionScriptで、押したボタンの判別方法を教えてください。)

ActionScriptでボタン判別方法を教えてください

このQ&Aのポイント
  • ActionScriptでボタンを判別する方法を教えてください
  • フレームごとに配置したボタンを押したときに、指定のフレームに移動する方法を教えてください
  • FLASH初心者ですが、ボタンの判別と動作を上手く行いたいです

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

MovieClip(parent).gotoAndPlay("m"+i); の部分を trace(i); に変えてみてください↓。 ---------------------------------- for (var i:int = 1; i <= 6; i++) { this["btn" + i].addEventListener(MouseEvent.CLICK,Down); function Down(mo:Event):void { trace(i); } } ---------------------------------- これで「制御」→「ムービープレビュー」で表示されたSWF内の6つのボタンをクリックすると 原因がわかるかもしれません。 6つのボタンをクリックすると どのボタンをクリックしても 7 と出力されませんか? for文を抜けた後 i は 7 になるので i <= 6 という条件が満たされず for文 には再突入ぜずに for文 の実行は終了します。 各ボタンがクリックされるのは for文を抜けた ずーーっと,ずーーーーーーーーーーっと 後です。 つまり 各ボタンがクリックされる頃には i は すでに 7 になっていますから どのボタンをクリックしても i は 7 と表示されるのです。 つまり どのボタンをクリックしても MovieClip(parent).gotoAndPlay("m"+7); が実行される。 すなわち MovieClip(parent).gotoAndPlay("m7"); が実行されるのです。 こういう場合の回避策の1つとして 「クロージャ」というものが使われます。 スクリプトを次のように書き直して 「制御」→「ムービープレビュー」で表示されたSWF内の6つのボタンをクリックしてみてください。 ---------------------------------- for (var i:int = 1; i <= 6; i++) { this["btn" + i].addEventListener(MouseEvent.CLICK,Down(i)); function Down(num:int):Function { return function():void{ trace(num); }; } } ---------------------------------- 1 や 2 や … や 6 が出力されると思います。 「クロージャ - Wikipedia」 http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3

manakanaka
質問者

お礼

すばやい回答ありがとうございました。 すごいです。 思ったとおりのボタンになりました。 本当にありがとうございます。 俺ももっと勉強して、知識をつけていきたいと思います。 また、素っ頓狂な質問をしてしまうかもしれませんが、いろいろと教えてください。 よろしくお願いします。

関連するQ&A