• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数インスタンスに共通するイベント処理の方法)

複数インスタンスに共通するイベント処理の方法

このQ&Aのポイント
  • ActionScript3.0でサイト制作を行なっている際の、複数インスタンスに共通するイベント処理の方法について教えてください。
  • マウスイベントのイベントリスナーを複数のボタンに登録する場合、ループ処理によって登録できるかどうかを教えてください。
  • 配列を使用してイベントリスナーの指定の文字列だけを置き換える方法や、イベント処理の記述を簡略化する方法について教えてください。

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

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

こんな感じでしょうか↓? -------------------------------------------------------- var btnArr:Array=new Array("Home","About","Contact"); for (var i:int=0; i<=2; i++) { menu["button"+btnArr[i]].addEventListener(MouseEvent.MOUSE_OVER, this[btnArr[i]+"Over"]); } function HomeOver(evt:MouseEvent):void { trace("homeです"); } function AboutOver(evt:MouseEvent):void { trace("Aboutです"); } function ContactOver(evt:MouseEvent):void { trace("Contactです"); } -------------------------------------------------------- なお上記では 「buttonHome」と「HomeOver」 は 「Home」 で統一しています。 「buttonHome」「homeOver」のままでは無事に動作しません。 Google検索「配列アクセス演算子」 http://www.google.co.jp/search?hl=ja&source=hp&q=%E9%85%8D%E5%88%97%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E6%BC%94%E7%AE%97%E5%AD%90

John12345
質問者

お礼

ありがとうございます。 ご指摘の方法でコードを簡略化することができました。 この度はご回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • CLICKイベントと、MOUSE_DOWNイベント

    AS3です。 CLICKイベントと、 MOUSE_DOWN、MOUSE_UPイベント って 併用できないのでしょうか? 画像のギャラリーを作っています。 クリックしたときに、ボタンの色が一瞬変わって、 ギャラリーの画像も変わるものを作ろうとしています。 addEventListener(MouseEvent.MOUSE_DOWN, mDown, false, 0, true); addEventListener(MouseEvent.MOUSE_UP, mUP, false, 0, true); addEventListener(MouseEvent.CLICK, mClick, false, 0, true); こうすると、 mDown、mUPのハンドラ関数は実行されるのですが mClickのハンドラ関数は無視されます。 併用できない場合、上記のことを達成するには どのようにみなさん書かれているのでしょうか? ご存知の方いらっしゃいましたら、 何卒よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • アクションスクリプト3.0での存在している予定のインスタンスの参照方法

    abcというムービークリップにマウスオーバーするとxyz(クラス名はaru)という ムービークリップを表示するプログラム(アクションスクリプト3.0)を作りました。 abc.addEventListener(MouseEvent.MOUSE_OVER , mover); function mover(e:MouseEvent):void{ var xyz:aru = new aru(); xyz.x = 380; xyz.y = 100; addChild(xyz); } ここまでは問題なく機能しました。 ここで、abcのマウスオーバーがなくなった状態(つまりマウスアウト) になったら、xyzを非表示にしたいと思い以下のようにしました。 abc.addEventListener(MouseEvent.MOUSE_OVER , mover); abc.addEventListener(MouseEvent.MOUSE_OUT , mout); function mover(e:MouseEvent):void{ var xyz:aru = new aru(); xyz.x = 380; xyz.y = 100; addChild(xyz); } function mout(e:MouseEvent):void{ removeChild(xyz); } こうすると、removeChild(xyz)が未定義のプロパティxyzへのアクセスです。となりエラーとなってしまいます。 mout関数内でxyzが定義されていないからでるエラーなのでしょうか? もしそうだとすると、期待動作を実現するにはどのようにプログラムすればよろしいのでしょうか? 以上何とぞよろしくお願いいたします!

    • ベストアンサー
    • Flash
  • 【as3】クリックでインスタンスを増やしたい

    Actionscript初心者です。 勉強のため、以下のURLにあるActionscript2.0のFlashをActionscript3.0に書き換えたいと思っています。 http://allabout.co.jp/gm/gc/66814/ 左側にリースのパーツ、右に素のままのリースが配置されています。パーツはそれぞれ、リボン付きベル(インスタンス名「bellBig」)、松ぼっくり (インスタンス名「matu」)、小さいベル(インスタンス名「bellSmall」)と指定してあります。この3つのアイテムをドラッグドロップすることでリースを飾り付けていきます。 インスタンスをドラッグ&ドロップする所まではできたのですが、 松ぼっくりと小さいベルをドラッグした際にインスタンスを複製するところでつまずいています。 あまりにも初歩的な質問で恐縮ですが、ご教授お願いいたします。 /*////////////////////大きいベル/////////////////////*/ // ドラッグ開始 bellBig.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown1); function mouseDown1(event:MouseEvent):void{ bellBig.startDrag(); } // ドラッグ終了 bellBig.addEventListener(MouseEvent.MOUSE_UP,mouseUp1); function mouseUp1(event:MouseEvent):void{ bellBig.stopDrag(); } /*////////////////////まつぼっくり/////////////////////*/ // ドラッグ開始 matu.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown); function mouseDown(event:MouseEvent):void{ matu.startDrag(); } //ドラッグ終了 matu.addEventListener(MouseEvent.MOUSE_UP,mouseUp); function mouseUp(event:MouseEvent):void{ matu.stopDrag(); } /*////////////////////小さいベル/////////////////////*/ // ドラッグ開始 bellSmall.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown2); function mouseDown2(event:MouseEvent):void{ bellSmall.startDrag(); } // ドラッグ終了 bellSmall.addEventListener(MouseEvent.MOUSE_UP,mouseUp2); function mouseUp2(event:MouseEvent):void{ bellSmall.stopDrag(); }

  • フラッシュのマウスイベント

    フラッシュのマウスイベントがうまくいかないので教えてください。 ボタンはい列(5個)をしてそれぞれにインスタンスを付けました。 ロールオーバーで背景画像の入れ替えクリックで特定のURLへ飛びたいのですが 飛ぶことはできてもロールオーバーの記述がうまくいきません どう書けばいいのか教えてください 素人で説明見ながらなのでイフ とかエルスの使い方もよくわかりません。 ちなみに下記はクリックしたら出てきた記述で思い通りに動いています。 できたら出てくる画像がフェードインにしたいです 同じタイムラインに画像を配置してそれぞれMC-1とか名前も付けましたが 記述を探しても全くわかりません よろしくお願いします URL1.addEventListener(MouseEvent.CLICK,fl_ClickToGoToWebPage_5); function fl_ClickToGoToWebPage_5(event:MouseEvent):void { navigateToURL(new URLRequest("http://www.○○"), "_blank"); } /* クリックして Web ページに移動 */ URL2.addEventListener(MouseEvent.CLICK,fl_ClickToGoToWebPage_6); function fl_ClickToGoToWebPage_6(event:MouseEvent):void { navigateToURL(new URLRequest("http://www.○○"), "_blank"); } /* クリックして Web ページに移動 */ URL3.addEventListener(MouseEvent.CLICK, fl_ClickToGoToWebPage_7); function fl_ClickToGoToWebPage_7(event:MouseEvent):void { navigateToURL(new URLRequest("http://www.○○"), "_blank"); } /* クリックして Web ページに移動 */ URL4.addEventListener(MouseEvent.CLICK, fl_ClickToGoToWebPage_8); function fl_ClickToGoToWebPage_8(event:MouseEvent):void { navigateToURL(new URLRequest("http://www.○○"), "_blank"); } /* クリックして Web ページに移動 */ URL5.addEventListener(MouseEvent.CLICK, fl_ClickToGoToWebPage_9); function fl_ClickToGoToWebPage_9(event:MouseEvent):void { navigateToURL(new URLRequest("http://www.○○"), "_blank"); }

  • AS3でのマウスイベント受け渡しについて

    Actionscript3についての質問です。 どちらもSpriteクラスの親オブジェクトと子オブジェクトがあり、 ・MOUSE_OVERとMOUSE_OUTは親オブジェクトのイベントリスナーに処理をさせたい(子のaddやremoveを行うので)。 ・CLICKは子オブジェクトのリスナーに処理させたい。 という場合、どのように記述すればよいのでしょうか。 今のところ、子はmouseEnabledをfalseにして、親のクリックイベント処理でマウス座標からどの子がクリックされたのか(子は複数あります)を切り分ける方法しか思いつきません。 しかし、子が単純な形ではないのでこの方法では厳しいです。 他に何か良い方法は無いでしょうか。

    • ベストアンサー
    • Flash
  • 配列に入れたムービークリップのマウスイベントについて

    こんにちは。 actionscript3.0にて制作をしております。 FLASH CS4上にテキストフィールドが入ったムービークリップが予め作成してあり、 それを「box_mc」という名前でライブラリに登録しております。 box_mcを配列に格納し、それぞれにマウスイベントで横に10移動する処理を割り当てたく 下記の様な文法で作成しましたが、ランタイムエラー「#1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。」とエラーが表示されてしまいます。 それぞれの配列に正しくマウスイベントを割り当てるにはどうしたら良いでしょうか? var boxArray:Array = new Array(); for (var i:int = 0; i < 3; i++) { boxArray[i] = new box_mc(); // ボックス // マウスオーバーイベント boxArray[i].addEventListener(MouseEvent.MOUSE_OVER, function (event:MouseEvent):void { boxArray[i].x = 10; }); } お手数では御座いますが、ご教授いただけると幸いです。 宜しくお願い申し上げます。

    • ベストアンサー
    • Flash
  • マウスアウトで非表示にする

    シーン1に、mc(ムービークリップ)とcomment1(ムービークリップ)を配置 mcにマウスオーバーするとcomment1が表示される。 mcよりマウスアウトするとcommen1が非表示になる。 という感じにしたいのですが、マウスアウトしても非表示に出来ないで困っています。 //----------------------------------- MovieClip(root).comment1.visible = false; var pointX:Number=70; var pointY:Number=50; mc.addEventListener(MouseEvent.MOUSE_OVER, fl_MouseOver); function fl_MouseOver(event:MouseEvent):void { stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveFunc); function mouseMoveFunc(e:MouseEvent):void { MovieClip(root).comment1.visible = true; MovieClip(root).comment1.x=stage.mouseX+pointX; MovieClip(root).comment1.y=stage.mouseY+pointY; } } mc.addEventListener(MouseEvent.MOUSE_OUT, fl_MouseOver2); function fl_MouseOver2(event:MouseEvent):void { mc.removeEventListener(MouseEvent.MOUSE_OVER, fl_MouseOver); MovieClip(root).comment1.visible = false; } //-----------------------------------

    • ベストアンサー
    • Flash
  • マウスアウト処理とボタンの処理の重なりについて

    いつもお世話になっております。 FLASHで以下の仕様のボタンを作成しようとしております。 (※添付の図を参照願います) 四角い箱(box_mc)が配置されている場所にマウスカーソルを乗せると、 マウスーオーバー処理が動作し、box_mcがフェードインで表示されます。 box_mcはマウスアウトするとフェードアウトして消える(ボタンも一緒に消える) アニメーションになっています。 マウスオーバー処理(box_mc.addEventListener(MouseEvent.MOUSE_OVER)までは 良いのですが、box_mc上にある複数ボタンのどれかにマウスカーソルを 合わせると、box_mcのマウスアウト処理(box_mc.addEventListener (MouseEvent.MOUSE_OUT)が実行されてしまいます。 原因としては、box_mc上にある複数ボタンのどれかにマウスを乗せた時 (ハンドカーソルになっている時)は、マウスカーソルがbox_mc外にあると 判断され、box_mcのマウスアウト処理が実行されているのではないかと 考えました。 「box_mc上にあるボタンにカーソルを合わせても、box_mcのマウスアウト処理が 実行されず、box_mc上のボタンが処理できる」というのが理想の仕様ですが、 上記の仕組みでは難しそうなので、「マウスがbox_mcの座標外に出たらマウス アウト処理を実行する」という処理を考えていますが、 もっとシンプルな方法で処理できないか悩んでおります。 何方か知恵をお貸しいただけないでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • 複数のイベントリスナーを設置するのは正しい?

    クリック時、マウスオーバー時、マウスアウト時の処理を作るとき、 イベントリスナーの使い方はこのようなやり方でよいでしょうか。 var d = document.getElement.ById("id"); d.addEventListener('click', function(e){ var tar=e.target; tar.style.backgroundColor ="#000000"; },false); d.addEventListener('mouseover', function(e){ var tar=e.target; tar.style.backgroundColor ="#aaaaaa"; },false); d.addEventListener('mouseout', function(e){ var tar=e.target; tar.style.backgroundColor ="#555555"; },false);

  • マウスオーバー/マウスアウトで反応するボタン

    はじめまして、Flash初心者です。 かなり基本的な質問で申し訳ないのですが、ご教授のほど、よろしくお願いします。 マウスオーバーで、モーションが再生され、 マウスアウトで、別のモーションが再生され(オーバーの逆回転のようなもの) ボタンをムービークリップで作成しているのですが、うまくいかなくて困っています。 ◆レイヤー2 //マウスオーバー butt.addEventListener( MouseEvent.MOUSE_OVER , fnon ); function fnon ( e:MouseEvent ):void{ gotoAndPlay(2); } //マウスアウト butt.addEventListener( MouseEvent.MOUSE_OUT , fnout ); function fnout ( e:MouseEvent ):void{ gotoAndPlay(11); } ◆レイヤー1 1 stop(); 10 stop(); 20 gotoAndPlay(1); (おそらくこれよりもいい方法があると思うのですが・・・) ASを入れる位置がおかしいのでしょうか・・・ よろしくお願いします。