0
xmlファイルからデータをロードするクラスを作成しました。データをロードした後に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>
XMLので、他のクラスからXmlDataLoader
クラスをロードするデータがそれにアクセスすることができます。例えば。 Playerはプレイヤータグからのデータにアクセスし、敵タグから敵などにアクセスします。
xmlデータがロードされた後でのみ、xmlオブジェクトを返す方法はわかりません。
このクラス以外でm_xmlData
をトレースすると、常にnull
と表示されます。私は既に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;
}
}
}
はあなたの助けのために事前にありがとうございます:
は、ここに私のXmlDataLoader
クラスです。