0

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

            }


        }
4

1 に答える 1