11RIA 闪客社区 - 最赞 Animate Flash 论坛

搜索
查看: 2196|回复: 3
上一主题 下一主题

[文件读写 & 加载] AS3 加载图片等外部资源

[复制链接] TA的其它主题
发表于 2018-12-4 07:04:28 | 显示全部楼层 |阅读模式

【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

   关于 AS3 加载图片等外部资源,常用的有两种方式:Loader 和 Embed,各自的特点,总结如下:

   Embed:在 Flash 编译阶段就将资源嵌入,也就是说图片资源是会被编译进 swf 文件里面去的;这样子的好处是代码比较简洁,使用方便,也不存在加载顺序的问题,缺点是会增大 swf 文件的体积 Loader:在 Flash 运行阶段动态加载资源,这种方式不会影响 swf 文件的体积,而且可以很灵活地更改你要加载的资源,但是有可能会遇到路径变更或者跨域问题,同时,过多地使用 Loader 去动态加载无疑会加重服务器负担,因此需要和 Embed 权衡使用

书写的例子如下:
Embed:
[Actionscript3] 纯文本查看 复制代码
[Embed(source = "../assets/images/closeBtn.png")]
privatevar closeBtnImage:Class//需要嵌入的图片对象
privatevar btnSprite:Sprite = newSprite();
privatefunctiontest():void{
var bmp:Bitmap = new closeBtnImage();
btnSprite.addChild(bmp);
}


Loader:
[Actionscript3] 纯文本查看 复制代码
privatefunction addItem():void{
varloader:Loader = newLoader();
loader.load(newURLRequest("http://zhufei.de/something.png"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
}


[Actionscript3] 纯文本查看 复制代码
//监听到Loader加载完毕以后执行的函数
privatefunction loadComplete(e:Event):void{
var l:Loader=Loader(e.target.loader);//得到Loader对象
var bm:Bitmap = Bitmap(l.content);//Loader里面的内容
trace(l);
trace(bm);
}


位图占内存大的处理方法:

通过URLLoader指定BINARY方式读取图片文件,其data属性就是JPG或者其它压缩格式的ByteArray数据。保存图片ByteArray数据到内存。再通过loader.loadBytes来加载ByteArray数据。
发表于 2018-12-4 07:40:43 | 显示全部楼层
loader是加载jpg  png, GIF(静态),swf使用的。
embed,说实话我没怎么用过,但我知道。其实这种方式是给纯代码的程序用的,我一般都资源在flash库中,还可以做一些编辑更方便。

很多做游戏的都是把资源使用swc或者swf进行使用和加载。

如果加载本地文件,其实Air的 file那套api更快。。

URL那一套是用来加载任何资源的,外加可以通信。

其他暂时没想起来。。
回复

使用道具 举报

发表于 2020-8-4 09:16:37 | 显示全部楼层
这个是很实用的!很多场景下都需要类似的处理。
回复

使用道具 举报

发表于 2020-8-5 10:29:50 | 显示全部楼层
很有用的知识,学习了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)



快速回复 返回顶部 返回列表