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 );
[ ツッコむ ]
以上です。