2013-10-15 48 views
0

我試着寫一個類,它會返回給我一個給定字符串的json對象。我知道下面的代碼的語法是完全錯誤的,但只是試圖做到這一點。如何使一個事件監聽器函數返回一個值?如何跟蹤lisener函數的響應?

package com 
{ 
    import flash.display.MovieClip; 
    import com.adobe.*; 
    import com.adobe.serialization.json.JSON; 
    import flash.net.dns.AAAARecord; 
    import flash.net.URLRequest; 
    import flash.events.Event; 

    public class getJson extends MovieClip 
    { 

     public function getJson(urlString:String):Object 
     { 
      // constructor code 
      var returnObject:Object = new Object(); 
      var urlLoader:URLLoader = new URLLoader(); 
      returnObject=urlLoader.addEventListener(Event.COMPLETE,loadingComplete); 
      urlLoader.load(new URLRequest(urlString)); 
      return returnObject; 


     } 

     private function loadingcomplete(e:Event):Object 
     { 
      var jsonObject:Object = new Object(); 
      jsonObject=JSON.decode(urlString); 
      return jsonObject; 
     } 

    } 

} 
+0

這是行不通的。 'addEventListener'不返回任何東西,所以'returnObject'是'void',而不是'Object'。你究竟想要做什麼?事件不像你認爲的那樣工作。它們是異步的,所以沒有什麼可以返回數據。如果您想讓我們確切知道您想要達到的目標(您現在非常模糊),我們可能會指出您的方向正確。目前,有一點我們可以幫助 –

+0

@ Josh Janusch我需要通過URL並獲得約50個jsons。如果我可以發送和反饋一個接一個,可以根據需要輕鬆分類。現在的問題是,當我向Facebook發送約50個json請求時,當監聽器函數將獲取json並將其存儲在數組中時不知道。如果我從json load listener函數得到適當的反饋,我可以毫不拖延地處理和顯示結果。希望你有這個問題... – Sheik

+0

什麼是「正確的反饋」? Event.COMPLETE事件*是反饋。您不能在事件處理程序上返回任何內容,因爲沒有任何內容可以返回*到*。你想要的東西根本不可能。但是,您試圖達到的是Event系統的意義。 –

回答

-1

試試這個:

public var urlLoader:URLLoader; 
    public String url; 
    public function getJson(urlString:String):Object 
    { 
     url=urlString;    
     var returnObject:Object = new Object(); 
     urlLoader = new URLLoader(); 
     urlLoader.addEventListener(ProgressEvent.PROGRESS, onProgress); 
     urlLoader.load(new URLRequest(urlString)); 
     returnObject=urlLoader.addEventListener(Event.COMPLETE,onComplete);    
     return returnObject; 

    } 
    function onProgress(e:ProgressEvent):void 
    { 
    trace("Progressing"); 
    } 
    function onComplete(e:Event):void 
    { 
    trace("Fully loaded");  
    urlLoader.removeEventListener(ProgressEvent.PROGRESS, onProgress); 
    urlLoader.removeEventListener(Event.COMPLETE, onComplete); 
    var jsonObject:Object = new Object(); 
    jsonObject=JSON.decode(url); 
    return jsonObject 
    } 
+0

沒有它的不工作..我嘗試了類似的代碼,並得到了以下錯誤,第21行\t 1067:隱式強制的類型爲無效的值到一個無關的類型對象。 – Sheik

相關問題