メイン コーダーズルーム【スクリプト系】 インスタンス名の取得 | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
egoma | Åê¹ÆNo.3189 投稿日時: 2004-1-28 15:39 |
新米 居住地: 投稿: 6
使用環境:
OS Win2000 Flash MX 2004 Professional |
インスタンス名の取得 作成したムービークリップ内のダイナミックテキストの値を取得したいのですが・・・取得できないでいます。
外部から取得したデータを複数のダイナミックテキストを持つムービークリップに渡し、 このムービークリップの中でそれぞれのダイナミックテキストにデータをセットしています。 さらに、このムービークリップをメインのタイムラインでduplicateMovieClip()を使って複製しています。 この複数表示されたムービークリップ上のダイナミックテキストをクリックしたときに、 そのダイナミックテキストの値をメインのアクションスクリプトで下記のように取得しようと思うのですが、 クリックしたムービークリップのインスタンス名.ダイナミックテキストインスタンス名.text どのように、その複製したムービークリップのインスタンス名を取得したらよいのかわかりません。 また、どのようにイベントハンドラを記述すればよいのでしょうか? 具体的には ダイナミックテキストを複数用意しそれぞれインスタンス名を「text1」「text2」「text3」と名付けました。 この三つのダイナミックテキストをひとつのムービークリップとして 「Movie1」とインスタンス名を付けてひとつのオブジェクトとして作成しました。 これをコンポーネント化して、(#initclip,#endinitclip,Object.registerClass()メソッドを利用) このムービークリップのsetData()メソッドの中で「text1」「text2」「text3」に データをセットしています。 メインのActionScriptでは for文をまわして下記のように複製してムービークリップにデータを渡して表示しています。 Sample = Movie1.duplicateMovieClip( "movie"+i, 100 + i); Sample = setData(deta[it]); です。 よろしくお願いいたします。 |
森 なおき | Åê¹ÆNo.3194 投稿日時: 2004-1-28 17:21 |
モデレータ 居住地: 福岡(心は大阪) 投稿: 527
使用環境:
:MacOSX10.6.8 :FlashCS5.5 |
Re: インスタンス名の取得 なおきです。
とりあえずややこしいことはさておき(^^; 普通にそのムービークリップの中にtrace(this); ってな感じで書いて、調べてみてはどうでしょう? タイトルがインスタンス名の取得で、 中身がダイナミックの取得になってたので ちょっと迷いましたが。
|
森 なおき | Åê¹ÆNo.3234 投稿日時: 2004-1-29 3:56 |
モデレータ 居住地: 福岡(心は大阪) 投稿: 527
使用環境:
:MacOSX10.6.8 :FlashCS5.5 |
Re: インスタンス名の取得 なおきです。追伸&初心者の部屋から移動です。
ちょっと時間があったので見返してみたのですが Sample = Movie1.duplicateMovieClip( "movie"+i, 100 + i); で、Sampleに戻り値を取得していますよね? ここに格納される値がムービークリップへの参照になります。 ですので、例えばその中のtext1の文字列へのパスは Sample.text1.textで良いことになります。 それとSample = setData(deta[it]);ってのはちょっと 引っかかるのですがどういう処理でしょう(^^;
|
野中文雄 | Åê¹ÆNo.3239 投稿日時: 2004-1-29 7:12 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: インスタンス名の取得 まず、問題の切分けをしてください。
引用: egomaさんは書きました: 複製したMovieClipのインスタンス名は、MovieClip.duplicateMovieClip()メソッドの第1引数に指定しているはずですが... 引用: クリックしたムービークリップのインスタンス名.ダイナミックテキストインスタンス名.text MovieClipインスタンスのクリックを受取るイベントハンドラは、on (release)ハンドラかMovieClip.onReleaseメソッドで指定します。 そのインスタンスのパスは、ハンドラ内のthisで参照できます。インスタンス名は、MovieClip._nameプロパティで取得します。 引用: また、どのようにイベントハンドラを記述すればよいのでしょうか? コンポーネントにクラス定義するには、インスタンスの生成やそのタイミングなど、オブジェクトインスタンスの扱いに関する高度な知識を必要とするはずです。上記のご質問とのチグハグさを感じます。 #「デミグラスソースはつくったのですが、ハンバーグの焼き方がわかりません」 #という感じです。そこまで本格的な料理をやるのに、なぜ焼き方がわからない? 引用: これをコンポーネント化して、(#initclip,#endinitclip,Object.registerClass()メソッドを利用) setData()は、ムービークリップシンボルに定義したメソッドといわれていませんでしたか? 以下のスクリプトでは、タイムライン上に関数が定義されているように見受けられます。それとも、このスクリプト自体が、ムービークリップのクラス定義に記述されているのでしょうか? いずれにしても、第1ステートメントで取得している複製されたインスタンスのパスが、第2ステートメントで上書きされて破棄される結果になるはずです。それとも、Sample.setData(deta[it]);の誤りでしょうか?
|
egoma | Åê¹ÆNo.3263 投稿日時: 2004-1-29 14:24 |
新米 居住地: 投稿: 6
使用環境:
OS Win2000 Flash MX 2004 Professional |
Re: インスタンス名の取得 皆様
ありがとうございます。 申し訳ありません。 MovieClipインスタンスのクリックを受け取るイベントハンドラをonClipEvent(mouseDown)としていて、 クリックすると複製したMovieClipのインスタンス名を全て取得するので取れないと思ってしまいました。 なおきさんのtrace(this)で表示して調べてみればのご意見に、 やってみたけど・・と思いながら、見直してみて気づきました。 それと Sample = setData(data[it]); はご指摘のとおり Sample.setData(data[it]); の誤りです。 お恥ずかしい限りです。 on(relese){ trace(this._name); v = this.text1.text; } でダイナミックテキストの値を取得できました。 引き続き質問なのですが、 いま、MovieClip上をクリックして、そのMovieClipのtext1の値を取得できましたが, MovieClipのtext1をクリックしたらAの処理 MovieClipのtext2をクリックしたらBの処理 というようにする場合は MovieClipのtext1をクリックしたという:MovieClipのインスタンスのtext1のインスタンスのクリックを受け取るイベントハンドラ はどのように指定するのでしょうか? またまた、ハンバーグの作り方をお聞きしているのかもしれませんが よろしくお願いいたします。 皆様の素早いご回答に感謝いたします。 |
youich | Åê¹ÆNo.3284 投稿日時: 2004-1-29 21:14 |
職人 居住地: kobe 投稿: 349
使用環境:
Tiger |
Re: インスタンス名の取得 引用:
2004のtextFieldってクリックイベント起こします? textFieldをmovieClipでくるんでそのムービークリップでイベントをひろうのが 簡単なんじゃないでしょうか? しかしTextFiled._xmouseや_ymouseっていうのがあるから、 これをクリックの判断に使うのもできそうですね、、ちょっとぶさいくやけど(^^;
|
野中文雄 | Åê¹ÆNo.3287 投稿日時: 2004-1-29 23:15 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: インスタンス名の取得 MX 2004でも、TextFieldにはマウスイベントハンドラは実装されていません。
「ActionScript辞書」のTextFieldクラスで確認しましょう。>egomaさん 引用: youichさんは書きました: イベントを取得したければ、それが可能なシンボルで包むというのがFlashの定石ですね。 引用: textFieldをmovieClipでくるんでそのムービークリップでイベントをひろうのが よくわからないですが、ムービークリップシンボルの第1フレームアクションにはクラス定義してあるようですので、MovieClipアクションでスクリプトを作成してみました。
|
egoma | Åê¹ÆNo.3315 投稿日時: 2004-1-30 11:22 |
新米 居住地: 投稿: 6
使用環境:
OS Win2000 Flash MX 2004 Professional |
Re: インスタンス名の取得 できました!!
ありがとうございます。 「ActionScript辞書」で確認しました。 マウスイベントハンドラは無いですね。 なんとなく、TextFieldをシンボル化するのかなぁと思っていたのですが、 テキストをシンボル化するのも・・と考えていました。 なるほど。 配列演算子を使うとインスタンスもオブジェクトも持てますし x_mouse,ymouseを使って、判断するのですね。 ActionScriptの幅が広がりました。 なんだか、動かして楽しくなりました。 TextFieldをシンボル化してイベントをひろう方法もできました。 ありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |