2010-09-20 259 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