flash开发之加载图片

flash的强项就是处理动画。处理动画之前得加载一些前提资源。


加载使用的是Loader这个类。

看一示例,加载一个图片。

flash的加载图片只能加载jpg,gif,png类型,其它类型不能加载。


[SWF(width = "530", height = "510")]
public class BitmapDemo extends Sprite
{
public function BitmapDemo()
{
loadeImage();
}


private function loadeImage():void
{
var loader:Loader = new Loader();
var request:URLRequest = new URLRequest("assets/image/adobe.png");
loader.load(request);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);

}

protected function onComplete(event:Event):void
{
var loaderInfo:LoaderInfo = event.target as LoaderInfo;
var loader:Loader = loaderInfo.loader;
var bmp:Bitmap = Bitmap(loader.content);
this.addChild(bmp);

}
}
这个示例很是简单。

但有一些疑问。


loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
为什么不直接在loader对象上添加监听,而得在contentLoaderInfo上添加

 

 

据说这是为了在内容还没有被加载的时候就获得被加载对象的属性:已加载尺寸,总尺寸,标称的宽和高,路径等。

 

 

这样的时候
loader.loaderInfo.addEventListener(Event.COMPLETE, onCompletetHandler);
会出错
这样的话却是对的
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompletetHandler);

那contentLoaderInfo和loaderInfo啥关系呢?其实loader的contentLoaderInfo属性是LoaderInfo类的一个实例。而LoaderInfo类是共享与Loader和被加载对象之间共享信息的类。

不过在未加载完成的时候loader.loaderInfo为null
所以在未加载完成之前一定要用loader.contentLoaderInfo
建议加载完成时也用loader.contentLoaderInfo

 

通过contentLoaderInfo添加下载侦听存在一个问题:加载文件有个时间延迟,在延迟的这段时间内可能已经开始加载别的文件了。所以在侦听到Event.COMPLETE事件的时候,并不知道到底是那个文件完成加载了。这时就需要通过contentLoaderInfof反向得到loader:
private function movieLoaded(evt:Event):void { trace(evt.target.loader.name); }


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值