そのため、AS3 で次のようなことを実行して、任意の画像を読み込み、実行時にビットマップ データを取得しようとしました。
var bitmapData:BitmapData;
var loader:Loader;
var completed:Boolean = false;
public function loadBitData(path:String):BitmapData{
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest(path));
while(!completed){
}
completed = false;
return bitmapData;
}
private function onComplete (event:Event):void{
bitmapData = Bitmap(LoaderInfo(event.target).content).bitmapData;
completed = true;
}
ローダーは別のスレッドでファイルをロードしないため、このコードは明らかに無限ループに陥ります。while ループを削除すると、そのステートメントに到達するまでにデータがロードされていないため、メソッドは null を返します。ただし、後でデータをロードします。(進行状況イベントを使用してこれを確認し、これまでにロードされたデータの量を出力しました)
メソッドがファイルをロードし、完全にロードされたら BitmapData を返すようにしたいだけです。これが発生するまで、プログラムは待機し、それ以上コードを実行しないでください。これに関する任意の助けをいただければ幸いです。