package
{
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite{
public function Main():void {
var reader:CReadData = new CReadData("./data.csv");
reader.getdata();
}
}
}
import flash.events.Event;
import flash.events.TimerEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
class CReadData {
private var myloader:URLLoader;
public function CReadData(v_path:String) {
trace("(1)CReadDataコンストラクタ");
myloader = new URLLoader();
var request:URLRequest = new URLRequest(v_path);
myloader.addEventListener(Event.COMPLETE, onComplete);
myloader.load(request);
}
public function getdata() :void{
trace("(3)読み込んだデータを取得");
}
public function onComplete(e:Event):void {
trace("(2)読み込み完了");
}
}
(1)CReadDataコンストラクタ
(3)読み込んだデータを取得
(2)読み込み完了
このプログラムを実行すると、読み込みが完了する前に、読み込んだデーターを取得してしまいます。
データを読み込み終わってから取得、つまり(1)(2)(3)の順で実行されるようにしたいのですが、myloader.loadを呼んだ時点で、onCompleteを待たずに、returnしてしまうようです。
Event.ENTRY_FRAMEとフラグを使って強引に実行することはできるようですが、クラス内で完結させたいので、それを使わず、静的にonCompleteされるまで処理を待つ、なにか良い方法はないものでしょうか