1、Flash Builder 4 的Debug模式好像不支持Chrome,害得我一度又以为无法进入Debug模式了。。。
2、Flex4读取XML数据
之前采用2.1的方法读取,有两个问题
(1)用IE会出现#1009的错误,而用Chrome就不会报错;
(2)原本是希望点击按钮触发获取XML的方法,并启动播放器播放音频,但一直是双击按钮才会触发播放器播放音频文件。
一直很困惑,昨天终于解决。如下:
2.1 通过HTTPService获取
在MXML:
- <s:HTTPService id="xmlService" resultFormat="e4x"/>
在AS:
- xmlService.url="SurNameOrigin.xml";
- xmlService.send();
- var NameXML:XML=new XML(xmlService.lastResult.toString());
但这样总会出现#1009:无法访问空对象引用的属性或方法错误。后来网上看到说,xml文件的读取速度肯定赶不上CPU的,所以在 xmlService.send();以后,立即就去取值,有可能会报"空对象"错。(出处http://deswork.blog.163.com/blog/static/16384664720108160162704/)解决方法是增加result处理参数,然后建立result处理函数,在函数内再取值。
在MXML:
- <mx:HTTPService id="xmlService" result="productServiceResultHandler(event)" />
在AS:
- private function productServiceResultHandler(event:ResultEvent):void
- {
- var NameXML:XML=new XML(xmlService.lastResult.toString());
- }
不过,这种方法也没有成功,可能是和2.2中一样的原因,有空尝试。
2.2 通过URLRequest类来加载xml数据
(出处http://daoger.javaeye.com/blog/204694)
不需要HTTPService,在AS:
- private var urlLoader:URLLoader=new URLLoader();
- private var NameXML:XML = new XML();
- private function loadXML():void
- {
- var request:URLRequest=new URLRequest("SurNameOrigin.xml");
- urlLoader.load(request);
- urlLoader.addEventListener(Event.COMPLETE,completeHandle);
- //findTask.execute(myOriginFind);
- }
- private function completeHandle(e:Event):void
- {
- NameXML=XML(urlLoader.data);
- }
并在creationComplete()中调用:
- <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/mx"
- xmlns:esri="http://www.esri.com/2008/ags"
- xmlns:flash="flash.text.*"
- xmlns:custom="component.*"
- xmlns:sample="com.esri.samples.*"
- height="100%" creationComplete="loadXML()" width="100%">
终于成功,且只要单击按钮就可以播放了。