Flash 板


LINE

不好意思打擾了 最近在試著寫讀取不確定數量的XML檔案,遇到一些問題, 希望有前輩能幫幫忙指點解惑 ____________________________________________________________________________ 因為想要讓遊戲每次按鈕觸發不同狀況下有不同的效果動畫大致情況如下 ex 狀況一~由a、b、c三種動畫random其中一種 狀況二~由d、e、f三種動畫random其中一種 etc…… 所以現在我有10個xml檔案 首先是select.xml 它列出其他九個xml檔的名稱,希望這樣以後要新增檔案時只要加入新檔案後 增加新檔案名稱在這份xml上,不要再去動as上的程式碼 select的內容現在如下 <select> <hatsure>hatsure-0.xml,hatsure-1.xml,hatsure-2.xml</hatsure> <riich1>riich1-0.xml,riich1-1.xml,riich1-2.xml</riich1> <riich2>riich2-0.xml,riich2-1.xml,riich2-2.xml</riich2> </select> 上面列了三種情況(hatsure riich1 riich2)下可讀取哪些檔案的名稱 而九份檔案的內容大同小異如下 <hatsure> <hatsureSize>640,480</hatsureSize> <hatsurePosition>0,0</hatsurePosition> <hatsureFlvName>Candies_2d.flv</hatsureFlvName> - <timeline> <yokokuData>50,yokoku02.swf,10,20,28</yokokuData> <yokokuData>150,yokoku02.swf,10,20,28</yokokuData> </timeline> </hatsure> 格式都是一樣的,差別僅在每個標籤所包的內容不同(歹勢好像是廢話^^"), 還有<yokokuData>這一項,不同檔案內的數量不一樣 比如上列是兩項 有的檔案會有三到四項,這個項目要可以增減。 ___________________________________________________________________________ 狀況大致如上 一開始我用兩層for迴圈包起來去讀,一直出現錯誤, 現在的寫法是這樣的…… (因為排版有點亂,也可以從這裡看http://www.megaupload.com/?d=UKEU7ZJ0 ) public class LoadXmlFile extends MovieClip{ public var i:int; public var a:int; public var xmlSaveArray:Array=new Array(); public var hatsureArray:Array=new Array(); public var riich1Array:Array=new Array(); public var riich2Array:Array=new Array(); public var hatsureXmlArray:Array=new Array(); public var hatsureDataArray:Array; public var hatsureXmlLoader:URLLoader; public var hatsureNumSand1:int; public var yokokuNumSand1:int; //建構式先讀入記載檔案名稱的select.xml public function LoadXmlFile() { var xmlLoader:URLLoader=new URLLoader(); xmlLoader.addEventListener(Event.COMPLETE,doXmlLoderComplete); function doXmlLoderComplete(e:Event):void{ XML.ignoreWhitespace = true; var xmlDataSaver:XML = new XML(xmlLoader.data); //把xmlDataSaver裡的資料存進xmlSaveArray裡,以便待會整理成可以取用的資料(內容 為接下來要取的xml檔檔名們) xmlSaveArray.push(xmlDataSaver.hatsure,xmlDataSaver.riich1, xmlDataSaver.riich2); //用doLoader這個function來把存進xmlSaveArray裡的資料分存到三個Array裡,以 便之後取得總共有幾筆(要存幾份xml),及那些xml的檔名 doLoader(); } var xmlURL:URLRequest = new URLRequest("select.xml"); xmlLoader.load(xmlURL); } //用doLoader這個function來把存進xmlSaveArray裡的資料分存到三個Array裡,以便之 後取得總共有幾筆(要存幾份xml),及那些xml的檔名 public function doLoader() { hatsureArray = xmlSaveArray[0].split(","); riich1Array = xmlSaveArray[1].split(","); riich2Array = xmlSaveArray[2].split(","); trace(hatsureArray[1]); //先試做只存hatsureArray裡列出那些xml的部份 doNextLoader(); } public function doNextLoader() { //找出裡面有幾個檔案名稱 hatsureNumSand1=hatsureArray.length; //有幾個檔存幾次 for(a=0;a<hatsureNumSand1;a++){ //每回初始化一次hatsureXmlLoader hatsureXmlLoader=new URLLoader(); hatsureXmlLoader.addEventListener(Event.COMPLETE,function (e:Event){hatsureXmlLoaderComplete(e,a)}); //每回讀不同名稱的檔案 var hatsureURL:URLRequest = new URLRequest(hatsureArray[a]); hatsureXmlLoader.load(hatsureURL); trace("hatsureArray[a]:"+hatsureArray[a]); } } public function hatsureXmlLoaderComplete(e:Event,hatsureA:int):void{ XML.ignoreWhitespace = true; var hatsureDataSaver:XML = new XML(hatsureXmlLoader.data); //因為之後的程式要用random的方式決定使用哪一份檔案的資料,所以存成二維陣列 ,以後想用hatsureXmlArray[i],i用random的方式來取用資料 hatsureXmlArray[hatsureA]=new Array(); hatsureXmlArray[hatsureA].push(hatsureDataSaver.hatsureSize, hatsureDataSaver.hatsurePosition,hatsureDataSaver.hatsureFlvName); yokokuNumSand1 = hatsureDataSaver.timeline.yokokuData.length(); //yokokuData的資料筆數不同份xml不固定,所以先知道筆數後,用迴圈放進Array中 for (i=0; i<yokokuNumSand1; i++) { hatsureXmlArray[hatsureA].push(hatsureDataSaver.timeline.yokokuData[i]); } //讀完整理資料和removeEventListener removeXmlListener(hatsureA); hatsureA=0; } public function removeXmlListener(resiveA:int){ hatsureDataArray[resiveA] =new Array(); hatsureDataArray[resiveA] = hatsureXmlArray[resiveA].split(","); hatsureXmlLoader.removeEventListener(Event.COMPLETE,hatsureXmlLoaderComplete); trace("done"); } } } _____________________________________________________________________________ 但出來的結果如下…… 執行階段錯誤 hatsure-1.xml hatsureArray[a]:hatsure-0.xml hatsureArray[a]:hatsure-1.xml hatsureArray[a]:hatsure-2.xml hatsureXmlArray:,, yokokuNumSand1(3):0 TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにア クセスすることはできません。 at testgame::LoadXmlFile/removeXmlListener() at testgame::LoadXmlFile/hatsureXmlLoaderComplete() at Function/<anonymous>() at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at flash.net::URLLoader/onComplete() hatsureXmlArray:,, yokokuNumSand1(3):0 TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにア クセスすることはできません。 at testgame::LoadXmlFile/removeXmlListener() at testgame::LoadXmlFile/hatsureXmlLoaderComplete() at Function/<anonymous>() at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at flash.net::URLLoader/onComplete() hatsureXmlArray:640,480,0,0,Candies_2d.flv,50,yokoku02.swf,10,20,28,150,yokoku02.swf,10,20,28 yokokuNumSand1(3):2 TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにア クセスすることはできません。 at testgame::LoadXmlFile/removeXmlListener() at testgame::LoadXmlFile/hatsureXmlLoaderComplete() at Function/<anonymous>() at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at flash.net::URLLoader/onComplete() ____________________________________________________________________________ 說真的我試了三天真的好難 如果上面我的寫法很糟要全改的話也絕對沒問題的^^"請指點我一條明路吧!感謝!!! --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.50.49.65
1F:推 osanaosana:哇...日文版... 07/29 02:23
2F:→ osanaosana:雖然直接查1009錯誤應該就能知道是什麼錯誤,嘗試翻譯.. 07/29 02:28
3F:→ osanaosana:"無法存取空物件參照的屬性或方法" 07/29 02:30
4F:→ KawasumiMai:感覺起來不是讀取失敗,而是許多方法對應到不存在的 07/29 17:20
5F:→ KawasumiMai:變數,也許是宣告不正確? 07/29 17:20
6F:推 jeaby:你忘了給 hatsureDataArray 實體 07/29 18:11







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP