重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

こんにちは。

XMLからデータを読み取ってそのpositionの値を元に
画像を動かそうとしています。
ただ、読み込んだ数値が文字と判断されていて、
numberで変換しても、数値にならずに、動かすことが
できません。
申し訳ありませんが、お教え頂ければ幸いです。
よろしくお願いします。

-----script-------------------------------------------
myXML = new XML ();
myXML.ignoreWhite = true;
myXML.load ("data.xml");
v_positionxArray = new Array ();
v_positionyArray = new Array ();

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_positionxArray.push (v_currentPhoto.childNodes[0].firstChild);
v_positionyArray.push (v_currentPhoto.childNodes[1].firstChild);
v_currentPhoto = v_currentPhoto.nextSibling;
}
} else {
trace ("error occured");
}
};

btn_test.onRelease = function () {
if (v_currentNumber < v_num-1) {
v_currentNumber+=1;
picture_x = Number(v_positionxArray[v_currentNumber]);
picture_y = Number(v_positionyArray[v_currentNumber]);
}
};

picture.onEnterFrame = function () {
this._x += picture_x;
this._y += picture_y;
}
-----xml data--------------------------------------
<data>
<member>
<positionx>-591</positionx>
<positiony>-130.7</positiony>
</member>
</data>

A 回答 (1件)

書かれているスクリプトの,


2箇所の部分↓。

===========================
for (i=0; i < v_num; i++) {
v_positionxArray.push (v_currentPhoto.childNodes[0].firstChild);
v_positionyArray.push (v_currentPhoto.childNodes[1].firstChild);
v_currentPhoto = v_currentPhoto.nextSibling;
}

--- & & & ---

btn_test.onRelease = function () {
if (v_currentNumber < v_num-1) {
v_currentNumber+=1;
picture_x = Number(v_positionxArray[v_currentNumber]);
picture_y = Number(v_positionyArray[v_currentNumber]);
}
};
===========================



この2箇所の部分について,
次のように修正すれば無事動作しましたよ↓。

===========================
for (i=0; i<v_num; i++) {
v_positionxArray.push(v_currentPhoto.childNodes[0].firstChild.nodeValue);
v_positionyArray.push(v_currentPhoto.childNodes[1].firstChild.nodeValue);
v_currentPhoto = v_currentPhoto.nextSibling;
}

--- & & & ---

btn_test.onRelease = function() {
picture_x = Number(v_positionxArray[0]);
picture_y = Number(v_positionyArray[1]);
};
===========================



もしくは,
次のように修正しても良いです↓。

===========================
for (i=0; i<v_num; i++) {
v_positionxArray.push(Number(v_currentPhoto.childNodes[0].firstChild.nodeValue));
v_positionyArray.push(Number(v_currentPhoto.childNodes[1].firstChild.nodeValue));
v_currentPhoto = v_currentPhoto.nextSibling;
}

--- & & & ---

btn_test.onRelease = function() {
picture_x = v_positionxArray[0];
picture_y = v_positionyArray[1];
};
===========================


firstChild とか,childNodes[] は,XMLNode であり,データ型が Object型 です。
Object はプロパティの集まりですから Number関数 で単純に数値化できません。
nodeValue が XMLNode の値で,String です。

Excel に喩えると(べつに喩えなくていいですが),
Range("A1") が A1セル 自体で,
Range("A1").Value が A1セルの値 です。
...と書いてみたものの,ちょっと違うかも???
とにかく,そういうニュアンスです。


XMLNode は Object だとか,
その値が nodeValu だとか,
nodeValu は String だとか,
そういうようなことが,次に書いてあります↓。

Flash 8 ドキュメンテーション(つまりヘルプ)
「XMLNode」
http://livedocs.macromedia.com/flash/8_jp/main/0 …


--- その他 ------

オブジェクト (object)とは: - IT用語辞典バイナリ
http://www.sophia-it.com/content/object
> オブジェクトとは、
> (1)グラフや図形などの視覚的データのひとまとまりのこと

Flash 8 ドキュメンテーション(つまりヘルプ)
オブジェクト (Object) データ型
http://livedocs.macromedia.com/flash/8_jp/main/0 …
> オブジェクトはプロパティの集まりです。
> "プロパティ" とは、オブジェクトを説明する属性です。
    • good
    • 0
この回答へのお礼

sassakun様いつもお世話になっております。

ありがとうございました。できました!
ほんとにちょっと感動です。

ありがとうございました。また、質問させて頂くかと思いますが、よろしくお願いいたします。

お礼日時:2007/04/02 20:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!