flashで外部のxmlを読み込んでいるのですが、読み込むまでの間にテキストフィールド(v_title)にundefindがでてしまいます。原因がわかりません(><)どなたかぜひ教えてくださいませ。
myXML = new XML ();
myXML.ignoreWhite = true;
myXML.load ("blog/photodata.xml");
v_titleArray = new Array ();
v_xOffset = myBase._x;
myXML.onLoad = function (loaded) {
if (loaded) {
v_rootNode = myXML.firstChild;
v_num = v_rootNode.childNodes.length;
v_currentPhoto = v_rootNode.firstChild;
v_currentNumber = 0;
for (i=0; i < v_num; i++) {
v_loadURL = v_currentPhoto.childNodes[1].firstChild;
v_titleArray.push (v_currentPhoto.childNodes[0].firstChild);
v_currentPhoto = v_currentPhoto.nextSibling;
f_makeAndLoad (i, v_loadURL);
}
} else {
trace ("error occured");
}
};
function f_makeAndLoad (num, path) {
myBase.myLoad.duplicateMovieClip ("myLoad"+num, num+1);
v_name = eval("myBase.myLoad"+num);
v_name._x = 156 * num;
v_name._y = 0;
v_name.loadMovie (path);
myBase.myLoad._visible = false;
}
myNext.onRelease = function () {
_parent._parent._parent.sound1.start();
if (v_currentNumber < v_num-1) {
v_currentNumber+=1;
}else{
_parent.nextFrame();
}
};
myBase.onEnterFrame = function () {
this._x += ((-156*v_currentNumber + v_xOffset)-this._x) ;
v_title = (unescape(v_titleArray[v_currentNumber]));
};
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] = 値
という感じで値が入っていきます。
perseさん
ありがとうございます!できましたpushのところはxmlを読み込むという本の内容のとおりにしるしていただけなのでまったく盲点でした・・・。
perseさんのおかげでしっかり理解できました。ありがとうございます!
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]="";
この回答への補足
お答えいただいてまことにありがとうございます!
実際に5行目に
v_currentNumber = 0;
v_titleArray[v_currentNumber] = "";
をいれてみたのですが、一番最初のXMLの文がでてこなくなりました。2番目に表示されるやつはしっかりとでているのですが。
perse様のいうとおりです!たしかにonEnterframeで実行しているために読み込みが終わらなくても自動で読み込んでしまうんですよね・・(TT)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ウディタで作ったゲームを公開...
-
uwscでExcelに自動記入
-
ゲオでカードを作るのは何歳か...
-
拡張子「swf」の再生方法について
-
アニメの「.fmd」をgif形式に変...
-
iPad、iPhoneでフラッシュムー...
-
アクションスクリプト2.0 奇数...
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
重複しない乱数の生成
-
配列の要素番号を取得するには?
-
VB.NET の配列の要素数
-
変な質問ですみません、n番目の...
-
VB6 複数行のテキストをリスト...
-
ActionScriptで配列をクリアす...
-
C言語のsizeof(サイズオブ)演算...
-
VBでボタンを押すと画像をラン...
-
重複しない乱数整数を発生させる。
-
複数の異なる結果を表示するラ...
-
ランダム表示を重複させないよ...
-
文章の改行数を取得する
-
[Objective-c]多次元配列のアク...
-
AS3.0 二次元配列でムービーク...
-
ランダムに6つの数字を選びその...
-
簡単な当たり判定作りたい
-
DataGridでCTRLキーを押さずに...
-
【ActionScript】配列の昇順降...
-
文字列にある数字を判別するに...
-
Vba 配列の中の特定文字列の位...
おすすめ情報