ブリッティング エンジンを作ろうとしていますが、この部分は本当に苦労しています。テクスチャ パッカーが吐き出すファイルからすべての 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
            }
        }