设置LoaderMax函数以将加载的数据作为数组返回?

时间:2014-09-11 11:25:14

标签: arrays actionscript-3 greensock

在Flash,AS3中,我无法使可重用的功能像这样工作:

  • 我给它一个文件号(编号)。
  • 它根据该号码(GreenSock loaderMax)
  • 加载一个TEXT文件
  • 加载后,它会将加载的数据拆分为数组。
  • 并为我返回ARRAY(加载数据后)。

到目前为止,这是我的代码:

package test.loaders{
    import com.greensock.loading.*;
    import com.greensock.events.LoaderEvent;
    import flash.display.MovieClip;

    public class LoaderTxt extends MovieClip {              
        private var _queue:LoaderMax;
        private var _textURL:String;
        private var _text:String;
        private var _Ar:Array = [];

        public function load(num:Number):Array{
            _txtURL = "data\text" + num + ".txt";

            _queue = new LoaderMax({name:"myLoader",onComplete:loadDone});          
            _queue.append(new DataLoader(_txtURL,{name:"thisTxt"}));
            _queue.load();

            trace("_Ar "+_Ar); //_Ar is empty

            return _Ar;
        }

        private function loadDone(event:LoaderEvent):void{
            _text = LoaderMax.getContent("thisTxt");
            _Ar = _text.split("\n");
            trace("_Ar "+_Ar); //This trace the loaded text correctly, as I like to return it.
        }
    }
}

问题是它返回一个空数组,因为它首先不返回任何内容,然后加载文本。

例如:

trace (LoaderTxt.load("3"));  //empty 

有什么想法吗?

此致   阿里

1 个答案:

答案 0 :(得分:0)

加载文件是一种异步操作,这意味着在调用_Ar后不会立即更新_queue.load()

你可以做以下两件事之一:

1)为您的LoaderTxt实例添加一个事件监听器,并在loadDone

中重新发送该事件

2)通过"回调"功能到load方法,稍后将在loadDone

中调用

无论哪种方式,您都无法立即从load()

获取结果