打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

  ActionScript 3.0中引入了一个专门用来处理外部swf文件和图像文件加载任务的类:Loader类。这篇文章将会详细介绍AS3中如何使用Loader类来加载外部图片。
  开始之前先做一些准备工作。新建一个空的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显示对象。正是通过这样的方法将外部图片显示在舞台上的。
        上面的例子示范了载入一个外部图像的完整过程,且在最后通过Bitmap对象将其显示在舞台上,其实也可以直接将Loader添加到显示列表中来显示图片:addChild(Loader); 因为Loader本身也是一个显示对象,所以这样做其实是将Loader和其内载入的图片一起添加到了舞台中。但如果需要使用一个Loader对象来循环载入多个图片,这样的方法就会有问题,因为载入下一个图像的时候,已被载入的图片会被覆盖。就像一个装满水的杯子,再要装一杯果汁时,必须先倒掉已有的水。
     所以规范的做法是用Bitmap负责图片的显示,而Loader只负责图片的载入。
===================================================================================
import flash.display.Bitmap;
import flash.display.BitmapData;
//import fl.display
//import flash.display;
//import flash.display.BitmapData;
//import flash.display.Bitmap;

var b1:BitmapData = new BitmapData(100,100,false,0x0000ff);
var b2:Bitmap = new Bitmap(b1);
addChild(b2);

var c1:sss= new sss() 
//图片转换为类
var c2:Bitmap =new Bitmap()
c2.bitmapData=c1
c2.x=150
c2.y=150
c2.scaleX=0.1
c2.scaleY=0.1

addChild(c2)

var loader:Loader=new Loader(); 
LoadImage();

function LoadImage() 

var url=new URLRequest("1.jpg"); 
//加载 
loader.load(url); 
//注册加载事件,在加载完调用 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onload); 

function onload(evt:Event) 

//创建空的位图对象image,接收载入的位图图像数据 
var image:Bitmap=Bitmap(loader.content); 
image.x=50; 
image.y=50; 
image.scaleX=0.1
image.scaleY=0.1
addChild(image); 
}

var loader1:Loader = new Loader();
loader1.contentLoaderInfo.addEventListener(Event.INIT, onInit);
loader1.load(new URLRequest("1.jpg"))
function onInit(e:Event)
{
    var bitmapqq:Bitmap = loader1.content as Bitmap;
 bitmapqq.x=10
 bitmapqq.y=100
 bitmapqq.scaleX=0.2
 bitmapqq.scaleY=0.2
   addChild(bitmapqq)
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
第2章 ActionScript教程
安全沙箱问题#2123
BitmapData 详解(一)(转)
实时加载Flex皮肤
FLEX 4 动态加载背景图片 BackgroundImage
【零基础学as3】一步一步学做游戏1 让蘑菇随鼠标动起来
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服