2005/11/19(土) [n年前の日記]
#3 [flash] 毎回 new XML() する必要は無かった
_20005/11/17の日記
でメモしてた、XML読み込みのコードはちょっと無駄があった。毎フレーム new XML() しなくてもいいみたい。
// ========================================
// フレーム1 に記述
enemy_length = 0;
xml_length = 0;
load_status = 0;
// image に付随する情報。xml で渡される。
var enemy_name = new Array();
var enemy_imgpathA = new Array();
var enemy_nodeValue = new Array();
// XML読み込み用変数の設定
myxml = new XML();
myxml.onLoad = myXmlOnLoad;
myxml.ignoreWhite = true; // XML中のホワイトスペースを無視
// ----------------------------------------
// 以下は後で呼ばれる
// 敵情報の格納をする関数
function setEnemyData(n) {
enemy_name.push(n.attributes.name);
enemy_imgpathA.push(n.attributes.jpegURL);
enemy_nodeValue.push(n.firstChild.nodeValue);
}
// ムービークリップにJPEG画像を読むための関数
function updateImg(n) {
img_name = enemy_name[n];
img_path = enemy_imgpathA[n];
img_nvalue = enemy_nodeValue[n];
loadMovie(img_path, this.targetClip);
}
// xml がロードできたときに呼ばれる関数
function myXmlOnLoad(success) {
if ( success ) {
//エラーが出ることなくXMLドキュメントがロードされた。
rn = myxml.firstChild;
xml_length = rn.childNodes.length;
node = rn.firstChild;
// xml の内容を、敵データ用配列に格納
do {
setEnemyData(node); // 格納
nextnode = node.nextSibling; // 次のノードを求める
node = nextnode;
} while ( node != null );
enemy_length = enemy_name.length;
load_status = 1;
} else {
//XMLドキュメントがロードされなかった。
load_status = -1;
}
}
// ========================================
// フレーム2 に記述
load_status = 0;
// xml 読み込み開始
myxml.load("card9_utf8.xml");
// ========================================
// フレーム3 に記述
if ( load_status != 0 ) {
if ( load_status == 1 ) {
this.gotoAndPlay("loadsuccess");
} else {
this.gotoAndPlay("loaderror");
}
}
// ========================================
// フレーム4 に記述
this.gotoAndPlay( _currentframe - 1 );
[ ツッコむ ]
以上です。