as3加载外部文件

as3 加载外部文件或图像 flash.display.Loader
‍‍AS3 使用 flash.display.Loader 包 Loader类加载外部图像文件,具体代码如下:
注意:Loader.load()方法必须使用包 import flash.net.URLRequest 中URLRequest类可捕获单个 HTTP 请求中的所有信息.
----------------------------------------------------------------
import flash.display.Loader ;
import flash.net.URLRequest ;
//创建URLRequest对象
var targeturl:URLRequest=new RULRequest();
targeturl="image/aa.jpg";
//创建 Loader 对象
var myloader:Loader=new Loader();
myloader.load(targeturl);
---------------------------------------------------------------------
或 简化写法:
import flash.display.Loader ;
import flash.net.URLRequest ;
var myloader:Loader=new Loader();
myloader.load(new URLRequest("image/aa.jpg"));
错误的写法: var myloader:Loader=new Loader(new URLRequest("image/aa.jpg"));
-------------------------------------------------------------------------
添加事件监听:
要使用 contentLoaderInfo 属性处理事件返回与正在加载的对象相对应的 LoaderInfo 对象。
使用 content 属性 用来指向加载对象的数据地址
//加载完毕 监听事件
myloader.contentLoaderInfo.addEventListener(Event.COMPLETE,loader_ok);
function loader_ok(e:Event){
                var myimg:Bitmap=new Bitmap(e.target.content.bitmapData);
                addChild(myimg);
               trace("ok"); //位图载入成功
    }
实际上,当 Loader 类加载图像后,就会自动创建一个 Bitmap 对象,因此可以将 Loader对象直接将位图显示在舞台上,如:

    addChild(myloader); //注意:如果不考虑使用事件监测时使用

注意:为了避免造成内存 Bug 和资源浪费,应尽量避免直接使用打开的图像文件。而是将打开的文件写入新的位图副本,并关闭 Loader 对象,释放内存。
function loader_ok(e:Event){
var temp:Loader=e:target as Loader ; //临时Loader
//载入位图
var mybd:BitmapData=new BitmapData(temp.width , temp.height , false) ;
mybd.draw(temp) ;
var myimg:Bitmap=new Bitmap(mybd);
addChild(myimg);
//尝试释放位图内存
var unbd:BitmapData=e.target.content.bitmapData ;
temp.unload() ; //删除此 Loader 对象中使用 load() 方法加载的子项。
unbd.dispose() ; //释放用来存储 BitmapData 对象的内存。
}
另外,建议另外再创建一个极小的替身文件(比如1*1像素), 用 Loader 类的 load()方法加载替身文件,截图对原有文件的锁定。 以免造成 SWF 使用时无法替换原文件。
要确定 Loader 对象的状态,请监视与 Loader 对象的 contentLoaderInfo 属性相关联的 LoaderInfo 对象的以下事件:
在加载开始时调度

你可能感兴趣的:(as3)