2010-09-20 256 views
0

下面是我的課,它只是讀取一個xml文件並提供e4x格式的內容。不幸的是,在構造函數執行並將xmlProperties屬性設置爲期望值後,它會變爲null。任何人都知道我在做什麼錯了?爲什麼對象屬性爲空?

public class WebService 
    { 
    private var _propertiesReader:HTTPService; 
    private var _xmlProperties:XML; 

    public function WebService() 
    { 
     _propertiesReader = new HTTPService(); 
     _propertiesReader.url = "../resources/properties.xml"; 
     _propertiesReader.resultFormat = "e4x"; 
     _propertiesReader.contentType = "application/xml"; 
     _propertiesReader.addEventListener(ResultEvent.RESULT, function(event:ResultEvent):void 
     { 
      _xmlProperties = XML(event.result); 
     }); 
     _propertiesReader.addEventListener(FaultEvent.FAULT, function(event:FaultEvent):void 
     { 
      Alert.show("Unable to load properties content: " + event.fault.message + "\nPlease try again later.", "Properties File Load Error");  
     }); 
     _propertiesReader.send(); 
    } 

    public function get xmlProperties():XML 
    { 
     return _xmlProperties; 
    } 
    } 

回答

1

_xmlProperties正在通過File Load調用(通過回調事件)進行設置。它不是直接在構造函數中設置的。

您確定在檢查_xmlProperty的值之前,您是否在等待電話完成和回調事件觸發?

+0

有沒有一種方法來同步回調?目前,我實例化類,然後立即嘗試檢索_xmlProperty。 – tommac 2010-09-20 15:57:31

+0

@tommac:您應該傾聽事件,並在事件發生後才使用它。這是基於事件的編程的工作原理。 – 2010-09-20 16:45:15

+0

@Matti:有麻煩了;如果我要傾聽事件的發生,我會將這個類與我稱之爲的任何類/腳本耦合起來。我的目標是封裝從屬性文件中讀取。 – tommac 2010-09-20 17:15:59