我正试图制作一个blitting引擎,而这部分真的让我很难受。我正在尝试创建一个外部类来从纹理打包器吐出的文件中执行所有xml解析。我在我的实用程序包中创建了一个名为XmlParserBlit.as
的类我希望能够实例化它并调用一个函数来完成它的工作,如下所示:
var _xmlParser:XmlParserBlit = new XmlParserBlit();
_blitDataAry = _xmlParser.getAryFromBlitXmlData("blit_test_4.xml");
然而,似乎不会那么容易。 XmlParserBlit类中的函数有一个事件侦听器,它在加载完成时触发函数。似乎flash只是继续通过函数和跟踪(“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
}
}
答案 0 :(得分:0)
onXmlLoaded
才会触发。
您最好的选择是让getAryFromBlitXmlData
不返回值,并处理_xmlDataArray
内的onXmlLoaded