1、Flash Builder 4 的Debug模式好像不支持Chrome,害得我一度又以为无法进入Debug模式了。。。

2、Flex4读取XML数据

之前采用2.1的方法读取,有两个问题

(1)用IE会出现#1009的错误,而用Chrome就不会报错;

(2)原本是希望点击按钮触发获取XML的方法,并启动播放器播放音频,但一直是双击按钮才会触发播放器播放音频文件。

一直很困惑,昨天终于解决。如下:

 2.1 通过HTTPService获取

在MXML:

  1. <s:HTTPService id="xmlService"  resultFormat="e4x"/> 

在AS:

  1. xmlService.url="SurNameOrigin.xml";  
  2. xmlService.send(); 
  3. var NameXML:XML=new XML(xmlService.lastResult.toString()); 

但这样总会出现#1009:无法访问空对象引用的属性或方法错误。后来网上看到说,xml文件的读取速度肯定赶不上CPU的,所以在 xmlService.send();以后,立即就去取值,有可能会报"空对象"错。(出处http://deswork.blog.163.com/blog/static/16384664720108160162704/)解决方法是增加result处理参数,然后建立result处理函数,在函数内再取值。

在MXML:

  1. <mx:HTTPService id="xmlService" result="productServiceResultHandler(event)" /> 

在AS:

  1. private function productServiceResultHandler(event:ResultEvent):void 
  2.    var NameXML:XML=new XML(xmlService.lastResult.toString()); 

不过,这种方法也没有成功,可能是和2.2中一样的原因,有空尝试。

 

2.2 通过URLRequest类来加载xml数据

(出处http://daoger.javaeye.com/blog/204694

不需要HTTPService,在AS:

  1. private var urlLoader:URLLoader=new URLLoader(); 
  2. private var NameXML:XML = new XML(); 
  3.  
  4. private function loadXML():void 
  5.     var request:URLRequest=new URLRequest("SurNameOrigin.xml"); 
  6.     urlLoader.load(request); 
  7.     urlLoader.addEventListener(Event.COMPLETE,completeHandle); 
  8.     //findTask.execute(myOriginFind); 
  9.  
  10. private function completeHandle(e:Event):void 
  11.     NameXML=XML(urlLoader.data); 

并在creationComplete()中调用:

  1. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"            xmlns:s="library://ns.adobe.com/flex/spark" 
  2. xmlns:mx="library://ns.adobe.com/flex/mx" 
  3. xmlns:esri="http://www.esri.com/2008/ags" 
  4. xmlns:flash="flash.text.*" 
  5. xmlns:custom="component.*" 
  6. xmlns:sample="com.esri.samples.*" 
  7. height="100%" creationComplete="loadXML()" width="100%"> 

终于成功,且只要单击按钮就可以播放了。