as3加载外部图片的方法详解

来源:互联网 发布:获取股票交易明细数据 编辑:程序博客网 时间:2024/04/30 00:00
开始之前先做一些准备工作。新建一个空的flash文件,注意选择支持ActionScript 3.0的flash文件,保存该flash文件。再找一张图片并将其和新建的flash文件放在同一目录下(AS3能直接处理的位图格式包括JPG、GIF和PNG)。AS3载入外部图像的关键步骤:
1. 创建Loader对象并调用load()方法载入外部图片;
2. 添加侦听器,侦测载入是否完成;
3. 载入完成后将载入的图片添加到显示列表中;

1. 开始啦!先来创建一个loader对象

  如果把外部的图片当成是水,loader对象就是用来装水的杯子,因此在开始任务前必须先准备好用来装水的杯子。有了杯子还得告诉它应该去哪里取水,即图像文件的地址,地址信息是用URLRequest类来处理的。在已保存的flash文件中按F9输入以下代码:

var imgURL:URLRequest = new URLRequest();
imgURL.url="flower.jpg";

var imgLoader:Loader = new Loader();
imgLoader.load(imgURL);

2. 侦听加载是否完成

  针对图片的处理要在其被完全载入后才能开始,因此要先确认图片已经功载入。在上述代码后面添加侦听器,侦听图片载入是否已完成:

imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, finished);
function finished(evt:Event):void {
 trace("successfully loaded the image!");
}

按Ctrl+Enter测试影片,发现输出面板上出现“successfully loaded the image!”,代表图片已成功载入。
说明:另外需要注意的是,此处的侦听不是直接安装在Loader对象上,因为我们要侦听的不是水杯,而是水。Loader对象有一个contentLoaderInfo的属性,该属性指向被加载对象并处理被加载对象的信息。所以这里的侦听必须安装在contentLoaderInfo之上。

3. 将图像显示在舞台上

  通过第二步的测试,得知图片已经成功载入,但是并没有在舞台上显示出这个图片。这里我们将要使用Bitmap类来将其显示在舞台中。修改第二步中的侦听函数:

function finished(evt:Event):void {
var img:Bitmap = new Bitmap(evt.target.content.bitmapData);
 stage.addChild(img);
 img.x=100;
 img.y=100;
}

按Ctrl+Enter测试影片,可以看到图片已经按设定的位置出现在了舞台上。
说明:当Loader类载入了一个外部图片后,图像的解码信息被作为BitmapData格式存储在内存上,Loader.contentLoaderInfo.content.bitmapData指向该位图的内存地址。因此将该bitmapData数据赋给Bitmap对象就能创建一个新的Bitmap显示对象。正是通过这样的方法将外部图片显示在舞台上的。

小结:

  虽然和AS2相比,AS3载入外部图片的方式稍显复杂,但是完善了载入的过程和方法。使用中的好处也是显而易见的,此处不赘述了。上面的例子示范了载入一个外部图像的完整过程,且在最后通过Bitmap对象将其显示在舞台上,其实也可以直接将Loader添加到显示列表中来显示图片:addChild(Loader); 因为Loader本身也是一个显示对象,所以这样做其实是将Loader和其内载入的图片一起添加到了舞台中。但如果需要使用一个Loader对象来循环载入多个图片,这样的方法就会有问题,因为载入下一个图像的时候,已被载入的图片会被覆盖。就像一个装满水的杯子,再要装一杯果汁时,必须先倒掉已有的水。

  所以规范的做法是用Bitmap负责图片的显示,而Loader只负责图片的载入。

0 0
原创粉丝点击