- ベストアンサー
attachMovieで生成したインスタンスへの文字代入
- FlashMX(AS1.0)を使用している場合、attachMovieを使用して配置したムービークリップのダイナミックテキストに文字列を代入しても表示されないことがあります。
- 代わりにduplicateMovieClipを使用すると、ダイナミックテキスト内の文字が表示されます。
- 原因は不明ですが、attachMovieを使用して文字が表示されない場合にはduplicateMovieClipを試してみてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
よくわからない現象なので,実際に作って実験してみました。 dymtxt という変数名の ダイナミックテキスト をムービークリップに変換してステージ上から消し、 ライブラリのリンケージで sym_ln という識別子を付け、 「ActionScript に書き出し」にチェックを入れ、 フレームに次のようなスクリプトを書いてムービープレビューすると、 ちゃんと 123 は表示されましたよ。 ------------------------------- var cnt = 0; cnt++; var samp_mc = "tag"+cnt; _root.attachMovie("sym_ln", samp_mc, cnt); _root[samp_mc].dymtxt = "123"; ------------------------------- ダイナミックテキスト の文字の色は ちゃんと背景と違う色にしていらっしゃいますか? もし背景と同じ色だと表示されていても見えません。 あと,samp_mc は変数名であって, 実際のオブジェクト名(オブジェクトのインスタンス名)ではないので, _root.samp_mc.dymtxt = "123"; だと,変数は渡りません。 これだと, _root にある samp_mc というインスタンス名のムービークリップ内の変数 dymtxt の値が,"123" になります。 _root には,samp_mc というインスタンス名のムービークリップはないので,見えません。 だから,[ ] (配列アクセス演算子)を使って,変数の値をオブジェクト名化します。 もしくは,上の場合,[ ] (配列アクセス演算子)を使わずに, _root.tag1.dymtxt = "123"; と本当のインスタンス名を書いてもいいです。 loadMovie で、外部 SWF をロードする場合は、 読み込み待ち処理を入れないと、時間差の問題で変数がうまく届かない場合がありますが、 attachMovie の場合は、ムービークリップが見えないだけで、 実際にはムービー中に存在はしていますから、時間差の問題とも考えにくいです。
お礼
BlurFiltan様、実際に実験までしていただいた上に丁寧な回答、本当にありがとうございます。質問の4:samp_mc.dymtxt = "123"部分を_root[samp_mc].dymtxt ="123"とすると、期待通りに表示されました。 ムービークリップと、インスタンスの違いを理解していなかったことが原因のようです。もう一度マニュアルを読み返してみます。ありがとうございました。