AS3 - 从加载数据返回变量值的函数问题

时间:2013-09-04 15:26:38

标签: actionscript-3 flash actionscript flash-builder flash-cs5.5

我正试图制作一个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

            }


        }

1 个答案:

答案 0 :(得分:0)

在加载函数异步完成之后,

onXmlLoaded才会触发。 您最好的选择是让getAryFromBlitXmlData不返回值,并处理_xmlDataArray内的onXmlLoaded