- ベストアンサー
FLASHでXMLを読み込む際にundefindが出る原因とは?
- flashで外部のxmlを読み込んでいる際に、読み込むまでの間にテキストフィールド(v_title)にundefindが表示される現象が発生しています。原因がわかりません。どなたか教えてください。
- myXMLオブジェクトを使って外部のXMLファイルを読み込んでいる際に、テキストフィールド(v_title)が読み込まれるまでundefindと表示されます。原因がわかりません。助けてください。
- Flashで外部のXMLファイルを読み込もうとすると、テキストフィールド(v_title)に読み込むまでundefindが表示されます。原因がわかりません。アドバイスをお願いします。
- みんなの回答 (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] = 値 という感じで値が入っていきます。
その他の回答 (1)
- perse
- ベストアンサー率74% (113/152)
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]="";
補足
お答えいただいてまことにありがとうございます! 実際に5行目に v_currentNumber = 0; v_titleArray[v_currentNumber] = ""; をいれてみたのですが、一番最初のXMLの文がでてこなくなりました。2番目に表示されるやつはしっかりとでているのですが。 perse様のいうとおりです!たしかにonEnterframeで実行しているために読み込みが終わらなくても自動で読み込んでしまうんですよね・・(TT)
お礼
perseさん ありがとうございます!できましたpushのところはxmlを読み込むという本の内容のとおりにしるしていただけなのでまったく盲点でした・・・。 perseさんのおかげでしっかり理解できました。ありがとうございます!