在Flash,AS3中,我无法使可重用的功能像这样工作:
到目前为止,这是我的代码:
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
有什么想法吗?
此致 阿里
答案 0 :(得分:0)
加载文件是一种异步操作,这意味着在调用_Ar
后不会立即更新_queue.load()
。
你可以做以下两件事之一:
1)为您的LoaderTxt
实例添加一个事件监听器,并在loadDone
2)通过"回调"功能到load
方法,稍后将在loadDone
无论哪种方式,您都无法立即从load()