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灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP