我创建了一个从xml文件加载数据的类。
我的gameObject.xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<xml>
<player>
<health>100</health>
<speed>200</speed>
</player>
<enemy>
<health>50</health>
</enemy>
</xml>
XmlDataLoader
类从xml加载数据,以便其他类可以访问它。例如。玩家从玩家标签访问数据,从敌人标签访问敌人,依此类推......
我不知道如何在加载xml数据后返回xml对象。
每当我在本课程之外追踪m_xmlData
时,它总会给我一个null
。在将XmlDataLoader
传递给其他类之前,我已经初始化了它。
这是我的XmlDataLoader
课程:
public class XmlDataLoader
{
private var m_xmlData:XML = null;
private var m_urlLoader:URLLoader = null;
public function XmlDataLoader()
{
}
public function initialize(sUrl:String = ""):void
{
if (!m_urlLoader)
{
if (sUrl == "")
{
m_urlLoader = new URLLoader(new URLRequest("gameObjectProperties.xml"));
}
else
{
m_urlLoader = new URLLoader(new URLRequest(sUrl));
}
if (!m_urlLoader.hasEventListener(Event.COMPLETE))
{
m_urlLoader.addEventListener(Event.COMPLETE, loadXml);
}
}
}
public function destroy():void
{
if (m_urlLoader)
{
if (m_urlLoader.hasEventListener(Event.COMPLETE))
{
m_urlLoader.removeEventListener(Event.COMPLETE, loadXml);
}
m_urlLoader = null;
}
if (m_xmlData)
{
m_xmlData = null;
}
}
public function get xmlData():XML
{
return m_xmlData;
}
private function loadXml(e:Event):void
{
m_xmlData = new XML(e.target.data);
if (m_urlLoader)
{
if (m_urlLoader.hasEventListener(Event.COMPLETE))
{
m_urlLoader.removeEventListener(Event.COMPLETE, loadXml);
}
m_urlLoader = null;
}
}
}
提前感谢您的帮助。
答案 0 :(得分:1)
它为null,因为在定义var时设置为null
您没有显示任何显示您如何访问数据的代码
所以我假设您在负载完成之前正在寻找数据
您应该在loadXml函数中重新调度该事件
this.dispatchEvent( e );
// and out side the class you should have something like
var myDataLoader:XmlDataLoader = new XmlDataLoader()
mydataLoader.addEventListener( Event.COMPLETE, gotData )
function gotData( e:Event ):void{
trace( e.currentTarget.xmlData )
}