メイン コーダーズルーム【スクリプト系】 ループで複数のMCにイベントハンドラを登録する方法 | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
蛾次郎 | Åê¹ÆNo.34347 投稿日時: 2007-7-25 10:32 |
新米 居住地: 東京都 投稿: 12
使用環境:
Windows XP SP2 Flash CS3 Flash 8 |
ループで複数のMCにイベントハンドラを登録する方法 root にいくつかの同様な動作をさせたいムービークリップがあり、その上のテキストフィールドの文字列を指定したり、イベントハンドラを設定したいと思っています。
引用: root -+- item0_mc -+- title_txt 以上のような感じになっています。 最初は以下のようなコードをムービークリップの数書いていたのですが、 引用: item0_mc.title_txt.text = "ほげほげ"; このムービークリップの数が動的に変わるので、ループで設定しようと思い、以下のようなコードを書きました。 引用: var titles_array:Array = ["ほげほげ", "ふげふげ", "がすがす", "どんどん", "だらだら"]; しかし、このコードではうまくいきませんでした。 ムービークリップ上にマウスを持っていっても文字色が変わらないのです。ハンドラに trace 文を入れると出力されるのでハンドラとしては登録されているのだと思います。 おそらく基本的な部分で間違っていると思うのですが、現在どこが間違っているのか予想ができない状態です。 「ここが違う」「普通はこのようなコードを書く」などありましたら、教えていただけないでしょうか。
|
蛾次郎 | Åê¹ÆNo.34348 投稿日時: 2007-7-25 10:52 |
新米 居住地: 東京都 投稿: 12
使用環境:
Windows XP SP2 Flash CS3 Flash 8 |
Re: ループで複数のMCにイベントハンドラを登録する方法 自己レスです。
forループでMovieClipに設定したイベントハンドラメソッドから変数を参照する http://www.fumiononaka.com/TechNotes/Flash/FN0601002.html を見ているところです。どうも、 引用: タイムライン上には、forループの処理を終えたカウンタ変数iが値3をもっています。したがって、どのMovieClipインスタンスも、スクリプトの記述場所にあるタイムライン変数iを、共通に参照する結果となったのです。 あたりが問題のようです。 もう少し調べてみます。
|
ひろゆき | Åê¹ÆNo.34349 投稿日時: 2007-7-25 11:07 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: ループで複数のMCにイベントハンドラを登録する方法
「forループでMovieClipに設定したイベントハンドラメソッドから変数を参照する」の前に、 「Buttonのthis」をお読みになった方が良いように思います。
|
蛾次郎 | Åê¹ÆNo.34350 投稿日時: 2007-7-25 11:09 |
新米 居住地: 東京都 投稿: 12
使用環境:
Windows XP SP2 Flash CS3 Flash 8 |
Re: ループで複数のMCにイベントハンドラを登録する方法 結局、
引用: this["item" + i + "_mc"].onRollOver = function() とすることで目的の動作をすることがかわりました。 なぜ、ループで書いた場合とループで書かなかった場合に差異があるのかは不明です…
|
ひろゆき | Åê¹ÆNo.34351 投稿日時: 2007-7-25 11:21 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境:
10.8.5 Flash Professional CS4/CS6/CC Safari 6.1 |
Re: ループで複数のMCにイベントハンドラを登録する方法 もっとシンプルなもので、テストされるなどしないと、
訳が分からないままでしょう。 _root 上に、ムービークリップ(インスタンス名: mc1, mc2) を配置。 (ムービープレビューにて、確認) _root 第1フレームに
_root 第1フレームに
_root 第1フレームに
|
野中文雄 | Åê¹ÆNo.34352 投稿日時: 2007-7-25 11:44 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: ループで複数のMCにイベントハンドラを登録する方法 「ループ」しなくても、変数iやthisの参照を正しく理解しなければ同じことです。
引用: 蛾次郎さんは書きました:
|
蛾次郎 | Åê¹ÆNo.34358 投稿日時: 2007-7-25 13:39 |
新米 居住地: 東京都 投稿: 12
使用環境:
Windows XP SP2 Flash CS3 Flash 8 |
Re: ループで複数のMCにイベントハンドラを登録する方法 i に関しては、ループ中で、
などとして this._i を使い、(カウントアップ済みの)root の i を使わないという方法を取るということがわかりました。 this についてなんですが、 root -+- textField1 | +- movieClip1 | +- textField1 という構成で、movieClip1.onRollOver の中で、 this は _level0.movieClip1 textField1 は _root.textField1 this.textField1 は _root.movieClip1.textField1 今まで、いつでも textField1 は this.textField1 だと思っていましたが、_root.textField1 と _root.movieClip1.textField1 ということで違うものなんですね。 もう少し、勉強してみます。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |