Показать сообщение отдельно
Старый 06.05.2018, 23:26
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 26  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
Цитата:
Сообщение от 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);		
		}
__________________
while(live()) { hope(); }