我正在尝试制作一个 blitting 引擎,这部分真的让我很难过。我正在尝试创建一个外部类来从纹理打包器吐出的文件中进行所有 xml 解析。我在我的实用程序包中创建了一个名为 XmlParserBlit.as 的类
我希望能够实例化它并调用一个函数来完成它的工作,如下所示:
var _xmlParser:XmlParserBlit = new XmlParserBlit();
_blitDataAry = _xmlParser.getAryFromBlitXmlData("blit_test_4.xml");
然而,这似乎不会那么容易。XmlParserBlit 类内部的函数有一个事件侦听器,该事件侦听器会在加载完成时触发一个函数。似乎flash只是继续通过函数,而trace("Finished Array: " + _xmlDataAry); 只返回一个空白数组。我有什么方法可以等待完整的听众完成吗?或者,也许我可以承担将 getAryFromBlitXmlData 中的值返回给 onXmlLoaded 的责任?
我真的很难过,学习如何解决这个问题会让我对如何解决类似问题敞开心扉。谢谢。
public function getAryFromBlitXmlData(xmlPath:String):Array
{
_xmlDataAry = []
_xmlPath = xmlPath;
_testXml = new XML();
_testXmlRequest = new URLRequest(_xmlPath);
_testXmlLoader = new URLLoader();
_testXmlLoader.addEventListener(Event.COMPLETE, onXmlLoaded);
_testXmlLoader.load(_testXmlRequest);
trace("Finished Array: " + _xmlDataAry);
return _xmlDataAry;
}
protected function onXmlLoaded(event:Event):void
{
_loadedXML = new XML(event.target.data);
var theSprites:XMLList = _loadedXML..sprite
for each ( var _rectSprite:XML in theSprites)
{
//--------------------------------------
// do some string manipulations here
//--------------------------------------
}
var _rectangle:Rectangle = new Rectangle(_xValue, _yValue, _widthValue, _heightValue);
var miniAry:Array = [_rectangle, _xOffsetValue, _yOffsetValue]
_xmlDataAry.push(miniAry);
//* want to return _xmlDataAry to the getAryFromBlitXmlData function
}
}