メイン ActionScript 3.0 特設会議室 繰り返しでaddEventListenerを作成 | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ゲスト | Åê¹ÆNo.38263 投稿日時: 2008-3-30 1:29 |
繰り返しでaddEventListenerを作成 Stageにmcが10コ配置してあって、そのどれかをクリックでonMouseDownを実行したいのですが
for(var i:int=0; i<10; i++){ ???.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); } ???部分はどう書けばよいのでしょうか? as2では this["btn"+i] と書いていた所です よろしくお願いします。 |
|
ニノミヤ カズノリ | Åê¹ÆNo.38264 投稿日時: 2008-3-30 1:46 |
職人 居住地: 東京 投稿: 430
使用環境:
CS4 .4.11, .5.7 XP Pro(sp3) Flash Player 10,0,22,87, AIR 1.5.1, IE 5.5 & 6 & 7 & 8, Firefox 2.0.0.20 & 3.0.11 & 3.5, Opera 9.64, Safari 4, Google Chrome 2.0.172.31, Netscape 7.1 |
Re: 繰り返しでaddEventListenerを作成 引用:
prophetさんは書きました: AS3.0でも変わらず、this["btn"+i]で行けると思います。 |
ゲスト | Åê¹ÆNo.38266 投稿日時: 2008-3-30 1:58 |
Re: 繰り返しでaddEventListenerを作成 ありがとうございます、this["btn"+i]は問題ないのですね
public function onMouseDown(Event:MouseEvent):void { trace(this.name); } どのボタンを押しても出力がroot1になります 何故btn1とかではないのでしょうか? |
|
永井勝則 | Åê¹ÆNo.38267 投稿日時: 2008-3-30 1:59 |
職人 居住地: 白馬村 投稿: 796
使用環境:
Windows 7 :Flash CS4: 10.6.8 :Flash CS5.5 |
Re: 繰り返しでaddEventListenerを作成 複数のムービークリップをムービークリップ(mc_set)にくるんで、
そのmc_setでaddEventListener()を実行しておくと、 イベントの伝播というやつで子に伝えてくれる、 という便利な手法があります。
|
ゲスト | Åê¹ÆNo.38268 投稿日時: 2008-3-30 2:19 |
Re: 繰り返しでaddEventListenerを作成 for(var i:int=0; i<10; i++){
this["btn"+i].addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); } public function onMouseDown(Event:MouseEvent):void { trace(this.name); } でクリックしたmc名を取得することができました。 ありがとうございました。 このような処理はこの方法がベストなのでしょうか? as3になってこの辺の処理がよくわかりません 参考になるサイトとかあれば教えて下さい。 |
|
野中文雄 | Åê¹ÆNo.38269 投稿日時: 2008-3-30 11:01 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 繰り返しでaddEventListenerを作成 thisの参照先の違いは、おわかりになったのでしょうか。ActionScript 3.0からスコープの捉え方が変わりました。ActionScript 2.0からの移行時につまづきやすいポイントです。
参考: 『FLASH OOP』ActionScript 3.0版初稿 2-3「クラス定義とインスタンスの動的な生成」2-3-1-2「ActionScript 2.0を3.0と比較するためのポイント」および2-3-2-2「ActionScript 3.0と2.0の違い」 ちなみに、イベントオブジェクトの引数にEventという識別子を使うのは、止めましょう。 引用: prophetさんは書きました: 「このような処理」がどのような処理かによります。永井さんの手法との比較でいえば、その具体的な処理が親にさせるべきことなのか、個々の子に処理させた方がよいのかという、スクリプトの実質的なデザインに関わるからです。およそクリックで行う処理は、内容の如何を問わず、すべてこうするという決まりはありません。 マウスイベントについては、F-siteセミナー「イベントを制する者、ActionScript 3.0を制す」で解説しました。また、セミナーの様子は、F-siteセミナーレポートおよびそのトラックバック「閃光的網站・弛緩複合体」のReviewが詳しいです。 引用: このような処理はこの方法がベストなのでしょうか? |
ゲスト | Åê¹ÆNo.38270 投稿日時: 2008-3-30 16:48 |
Re: 繰り返しでaddEventListenerを作成 参考サイトをいろいろ読んでみました。
まだ理解できない部分が多いですが少しずつAS3を勉強していきます ありがとうございました。 |
|
永井勝則 | Åê¹ÆNo.38271 投稿日時: 2008-3-30 18:01 |
職人 居住地: 白馬村 投稿: 796
使用環境:
Windows 7 :Flash CS4: 10.6.8 :Flash CS5.5 |
Re: 繰り返しでaddEventListenerを作成 わたしの書いた、複数の子のボタンを親の中に入れるという方法は、真っ先に飛びつく方法ではないです。
混乱させてしまい、すいません。 ActionScript 3.0 + Flash CS3で、ムービークリップのボタンを複数 ダイナミックに作成するコードを4種類書いてみました。 やっていることはどれも同じなのですが、どこにどの機能を持たせているかが違います。 どれがよいとかよくないというのはないと思います。 addEventListener( )の設定場所も、ボタンに持たせたい機能によって変わってくると思います。 長文になります。
なお、 各ファイルともエラーは出ていないので問題ないとは思うのですが 記述に間違いまたは不適切な箇所がある可能性はあります。 個人的には、1か4の方法が”潔い”ので好きです。
|
ゲスト | Åê¹ÆNo.38274 投稿日時: 2008-3-31 0:15 |
Re: 繰り返しでaddEventListenerを作成 ありがとうございます、いろいろ試してみます
function onClickListener(e:MouseEvent):void { trace(e.target.name); } 上記のような書き方は自分ではなかなか見つけられないです。 現在、永井さんが翻訳した「ActionScript 3.0アニメーション」と ActionScript 3.0入門ノート/大重美幸著、を読んでAS3に挑戦しているところです 他に良い書籍があれば教えて下さい。 |
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |