Мне было интересно, можно ли реализовать какую-либо логику, чтобы изображение завершило загрузку без замораживания.
Ради своего приложения я создал класс, который принимает URL-адрес изображения в конструкторе и загружает mx.controls.Image с помощью функции load ().
см. Класс ниже
package com
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.*;
//import flash.net.URLRequest;
import mx.controls.Alert;
import mx.controls.Image;
//import mx.utils.OnDemandEventDispatcher;
public class SpriteImage extends Sprite
{
//Pass the source path or url here.
private var imageUrl:String;
private var ready:int = -1;
private var img:Image;
public function SpriteImage(imgUrl:String)
{
//imageUrl = imgUrl;
loadImage(imgUrl);
}
private function loadImage(imgUrl:String):void
{
img = new Image();
img.addEventListener(Event.COMPLETE,onCompleteHandler);
img.addEventListener(IOErrorEvent.IO_ERROR,onErrorHandler);
//img.source = imgUrl;
img.load(imgUrl);
}
private function onCompleteHandler(e:Event):void{
img.x = -(img.width/2);
img.y = -(img.height/2);
this.addChild(img);
ready = 1;
}
private function onErrorHandler(e:IOErrorEvent):void
{
ready = 0;
//Alert.show("Can't load :" + e.toString());
}
public function prepare():Boolean{
while(ready == -1){
trace(0);
}
return ready;
}
}
}
Теперь я использую этот класс из основного приложения, как это
var img:SpriteImage = new SpriteImage(e.imageUrl);
img.prepare(); // just waits till image is loaded but freezes
var obj:DisplayObject = img;
Теперь проблема в том, что приложение никогда не выходит из метода prepare (). Он зависает в браузере, и мне нужно убить процесс плагинов, чтобы разморозить приложение.
Основным критерием здесь является то, что мне нужно дождаться завершения загрузки изображения, чтобы я мог получить доступ к изображению на следующих шагах. Как я могу это сделать.? Пожалуйста, помогите