• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FLASHでXMLを読み込んだときに読み込むまでにundefindがでてしまいます。)

FLASHでXMLを読み込む際にundefindが出る原因とは?

このQ&Aのポイント
  • flashで外部のxmlを読み込んでいる際に、読み込むまでの間にテキストフィールド(v_title)にundefindが表示される現象が発生しています。原因がわかりません。どなたか教えてください。
  • myXMLオブジェクトを使って外部のXMLファイルを読み込んでいる際に、テキストフィールド(v_title)が読み込まれるまでundefindと表示されます。原因がわかりません。助けてください。
  • Flashで外部のXMLファイルを読み込もうとすると、テキストフィールド(v_title)に読み込むまでundefindが表示されます。原因がわかりません。アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • perse
  • ベストアンサー率74% (113/152)
回答No.2

恐らく v_titleArray.push (v_currentPhoto.childNodes[0].firstChild); でpushを使ってるからだと思います。 pushというのは配列の後ろに値を付加させるものです。 #1で0番目に空白を入れたのでここでpushした値はそれ以降に追加されていきます。 ですので0番目は常に空白となってしまいます。 どうすればいいのかというとpushを使うのをやめて 直接番号をしていして値をいれればいいと思います。 v_titleArray.push (v_currentPhoto.childNodes[0].firstChild);を v_titleArray[i] = v_currentPhoto.childNodes[0].firstChild; と書き換えます。 iは0から順番に増えていくので v_titleArray[0] = 値 v_titleArray[1] = 値 v_titleArray[2] = 値 という感じで値が入っていきます。

goodstars
質問者

お礼

perseさん ありがとうございます!できましたpushのところはxmlを読み込むという本の内容のとおりにしるしていただけなのでまったく盲点でした・・・。 perseさんのおかげでしっかり理解できました。ありがとうございます!

その他の回答 (1)

  • perse
  • ベストアンサー率74% (113/152)
回答No.1

undefinedは変数に値が割り当てられていないときにでるものなので値を割り当ててあげればよいと思います。 現在xmlを読み込んだときに v_titleArrayとv_currentNumberに値を入れています。 当然読み込む前は v_titleArray[0]=undefined (配列が空だから) v_currentNumber=undefined (Flashのバージョンによるかも) です。 しかし、onEnterFrameで(現在の書き方ではxmlの読み込みが終わらなくても実行されています。) テキストにv_titleArray[v_currentNumber]の値を表示させています。これが原因です。 解決策として (1)初期値に""を入れておく (2)xmlが読み込み終わってからonEnterFrameを実行する です。(2)は説明が長くなるので略です。 (関数の中以外ならどこでもいいのですが)5行目: v_titleArray = new Array (); の下あたりにでも書いてください。 //---------------------------------------------- v_currentNumber=0; v_titleArray[v_currentNumber]="";

goodstars
質問者

補足

お答えいただいてまことにありがとうございます! 実際に5行目に v_currentNumber = 0; v_titleArray[v_currentNumber] = ""; をいれてみたのですが、一番最初のXMLの文がでてこなくなりました。2番目に表示されるやつはしっかりとでているのですが。 perse様のいうとおりです!たしかにonEnterframeで実行しているために読み込みが終わらなくても自動で読み込んでしまうんですよね・・(TT)

関連するQ&A