У меня есть класс (ImageLoader), который расширяет контейнер Sprite и загружает внешнее изображение в его экземпляр. Когда я создаю экземпляр объекта этого класса из другого (основного) класса, я хочу, чтобы размеры (ширина, высота) загруженного изображения были известны этому (основному) классу. Мне кажется, что это сложно, так как размеры известны после загрузки изображения. Но я не знаю, как передать эту информацию из обработчика события completeHandler в класс Main. Есть идеи?
package
{
import flash.display.Sprite;
import flash.events.Event;</p>
<pre><code>public class Main extends Sprite
{
private const img1:String = "pic1.jpg";
private const img2:String = "pic2.jpg";
private var myImg1:ImageLoader;
private var myImg2:ImageLoader;
public function Main():void
{
myImg1 = new ImageLoader( img1 );
myImg1.cacheAsBitmap = true;
myImg1.addEventListener(ImageLoader.COMPLETE, onImageLoadComplete);
addChild( myImg1 );
}
private function onImageLoadComplete(evt : Event) : void
{
trace (ImageLoader(evt.currentTarget).getWidth());
trace (ImageLoader(evt.currentTarget).getHeight());
}
}
}
package
{
import flash.display.Sprite;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;</p>
<pre><code>public class ImageLoader extends Sprite
{
private var loader:Loader;
private var iWidth:int;
private var iHeight:int;
public static const COMPLETE : String = "complete";
public function ImageLoader( name:String ):void
{
loader = new Loader();
loader.contentLoaderInfo.addEventListener( Event.COMPLETE, completeHandler );
var request:URLRequest = new URLRequest( name );
loader.load( request );
}
public function getWidth():int
{
return iWidth;
}
public function getHeight():int
{
return iHeight;
}
private function completeHandler( event:Event ):void
{
iWidth = event.target.content.width
iHeight = event.target.content.height;
/* dispatcher MUST be after dimension computations */
dispatchEvent(new Event(ImageLoader.COMPLETE));
this.addChild( loader.content );
}
}
}