加载资源 — 图片

as3加载图片,swf等资源需要用到flash.display.Loader,其中涉及事件侦听,虽然简单,但如果写的不好,很容易出现错误,既不报错,也没有任何显示。

package
{
	import flash.display.Bitmap;
	import flash.display.DisplayObject;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.net.URLRequest;
	import flash.system.LoaderContext;
	
	/**
	 * ...
	 * @author zhujl
	 */
	public class LoadBitmap extends Sprite
	{
		private var loader:Loader;
		
		public function LoadBitmap() 
		{
			init();
		}
		
		public function init():void
		{
			loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadCompleted);
			
			loader.load(new URLRequest('1.jpg'));
		}
		
		public function onLoadCompleted(e: Event):void
		{
			var bitmap: Bitmap = e.target.content as Bitmap;
			addChild(bitmap);
		}
	}
	
}

为什么侦听loader.contentLoaderInfo呢?文档是这么写的:

与加载相关的事件由 Loader 对象的 contentLoaderInfo 属性引用的 LoaderInfo 对象调度。 contentLoaderInfo 属性设置为有效的 LoaderInfo 对象(即使在加载内容之前),这样您就可以在加载前将事件侦听器添加到该对象。


要确定 Loader 对象的状态,请监视与 Loader 对象的 contentLoaderInfo 属性相关联的 LoaderInfo 对象的以下事件:...

 

而在事件处理函数中,e.target自然就是contentLoaderInfo属性,也就是LoaderInfo对象,它的content属性是个DisplayObject,表示与此 LoaderInfo 对象关联的已加载对象。所以如果加载的是图片,它就是Bitmap,但需要先转换类型。


如果加载的图片太大,而我们需要在一个固定大小的容器中进行显示整张图片怎么办呢?

var bitmap: Bitmap = e.target.content as Bitmap;
bitmap.width = 200;
bitmap.height = 200;
bitmap.x = 100;
bitmap.y = 100;
addChild(bitmap);
posted @ 2011-11-12 15:55  越己  阅读(264)  评论(0编辑  收藏  举报