Цитата:
Сообщение от Appleman
Друзья!
Вот что у меня получилось по части использования loader-ов. Файл находит по адресу и даже вроде как загружает. Но я никак не могу сообразить, как мне теперь его вернуть.
 Код AS3:
public function getLoadedAsset(fileID: String) : Bitmap
{
var file: File = File.applicationDirectory.resolvePath("assets" + File.separator + "backgrounds" + File.separator + fileID + PNG);
var request: URLRequest = new URLRequest(file.url);
trace(file.url); // Показывает правильный путь
var loader: Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.load(request);
trace(loader.content); // null
}
private function completeHandler(e: Event) : void
{
var loader: Loader = Loader(e.target.loader);
var image: Bitmap = Bitmap(loader.content);
trace(image); // [object Bitmap]
}
То есть как мне вернуть битмапку из метода getLoadedAsset, когда она становится доступной только в методе completeHandler?
|
Не совсем православный, но самый очевидный и рабочий вариант - через функцию-callback

Код AS3:
public function getLoadedAsset(fileID: String, callback:Function) : void
{
var file: File = File.applicationDirectory.resolvePath("assets" + File.separator + "backgrounds" + File.separator + fileID + PNG);
var request: URLRequest = new URLRequest(file.url);
var loader: Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function():void
{
var loader: Loader = Loader(e.target.loader);
var image: Bitmap = Bitmap(loader.content);
callback(image);
});
loader.load(request);
}