ブリッティング エンジンを作ろうとしていますが、この部分は本当に苦労しています。テクスチャ パッカーが吐き出すファイルからすべての xml 解析を行う外部クラスを作成しようとしています。XmlParserBlit.as というユーティリティ パッケージにクラスを作成しました。
私はそれをインスタンス化し、それが仕事をするために1つの関数を呼び出すことができることを望んでいました.
var _xmlParser:XmlParserBlit = new XmlParserBlit();
_blitDataAry = _xmlParser.getAryFromBlitXmlData("blit_test_4.xml");
ただし、そう簡単にはいかないようです。XmlParserBlit クラス内の関数には、読み込みが完了したときに関数をトリガーするイベント リスナーがあります。フラッシュは関数を通過し続けているようで、 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
}
}