質問: myxml.img[0]; } trace(imgsrc);←ここがnullです。 function内でtraceすると問題なく表示されるのですが、 一体どうしてでしょうか。 ご教授お願いいたします。
回答: > 上記の書き方だと、functionが実行される前に > traceが実行されているということですよね。。。 そうですよ。 xmlloader.addeventlistener(event.complete, comp); によってxmlのロード完了時に関数compが実行されます。 当たり前ですが, xmlのロードが完了しないとxmlの内容などわかりません。 xmlのロードが完了して中身を閲覧や操作できるような状態になって 関数compが実行されるということです。 というか, そのために(関数compを即実行させないために) xmlloader.addeventlistener(event.complete, comp); を用意しているはずです。 >それとも、function外でimgsrcの値を >とる方法はないということでしょうか。。。 関数comp内で別の関数を実行させて, その別関数の中に trace(imgsrc); を書いておくのも1つの方法です。 また,書かれていらっしゃるスクリプトを書いたフレームで, そのフレームの再生を停止させておいて( stop() させておいて) 関数compの中で次のフレームに進むなどのスクリプトを書いて 次のフレームに trace(imgsrc); を書いておくのも1つの方法です。 例:フレーム1 で xmlをロードし ロード完了次第 フレーム2 に進めて フレーム2 以降で本体のスクリプトを動作させる。