2011-01-30 18 views
0

私はActionScript/Adob​​e Airでの作業を余儀なくされています。 Javaの背景から来ています。私がここで間違っていることを理解することはできません。誰かが助けてくれるかもしれません。基本的には、関数が返す関数を返します。XMLNodeが取得します。なぜこの変数を関数内から変更できないのですか?

public function getXmlWebpage(address:String):XMLNode { 
      var service:HTTPService = new HTTPService(); 
      var xmlResult : XMLNode = null; 

      service.method = "GET"; 
      service.url = address; 
      service.resultFormat = HTTPService.RESULT_FORMAT_XML; 

      function onResult(result:ResultEvent):void{ 
       trace("status code " + result.statusCode); 
       var node : XMLNode = result.result as XMLNode; 
       trace("node has NS URI " + node.namespaceURI); 
       xmlResult = node; 
      } 

      function onFail(event:FaultEvent):void{ 
       trace("fail function of getXmlWebpage called."); 
       Alert.show("error communicating with host " + event.fault.toString()); 
      } 

      service.addEventListener(FaultEvent.FAULT, onFail); 
      service.addEventListener(ResultEvent.RESULT, onResult); 

      service.send(null); 

      trace("return value will be " + xmlResult) 

      return xmlResult; 
     } 

しかし、ログが(はい、そのために)言う:私はここに

return value will be null 
status code 200 
node has NS URI http://www.w3.org/2005/Atom 

何を得ていないのですか? xmlResultonResultと変更できませんか?

答えて

3

getXmlWebpage関数は、service.sendが戻るのを待つのをブロックしません。この関数から目的の値を返すことはできません。代わりにonResultを使用して、結果をポストして処理できるものにコールバックします。

関連する問題