[AS3]Loader的load方法和loadBytes方法LoaderContext参数
(1)在看代码的时候还发现一个以前没有这么注意的问题,也mark一下。
关于Loader的load方法和loadBytes方法LoaderContext参数的问题。。
要加载某个SWF到自己的安全域内,需要给Loader.load方法指定一个LoaderContext对象。LoaderContext对象的securityDomain属性设置为当前的安全域(SecurityDomain.currentDomain)。通过这样的加载方式,父SWF授信给子SWF,而子SWF的授信则需要通过跨域策略文件。
也就是说LoaderContext=null 的情况下则已加载的内容将保留在它自己的安全域中。
而使用loadBytes和load不同的是,它不是用URL来加载外部内容,而是直接加载以ByteArray的形式加载对象。
由于ByteArray与域名之间没有关联,所以用loadBytes方法加载的对象将直接进入当前安全域内。因为你在加载包含这些字节对象之前往往都要经过某种信任授权,所以这通常是安全的。
即:loadBytes如果未指定 context 参数或者该参数引用了 null 对象,则内容将加载到当前的安全域(在 Flash Player 安全文档中称为“导入加载”的进程)中。具体来说,如果执行加载的 SWF 文件通过将远程 SWF 并入到其代码中来信任远程 SWF,则执行加载的 SWF 可直接将其导入到自己的安全域中。
(2)项目代码中很多的工程带有DLL的后缀,其实是用来把swc中的定义连接然后打包成swf用于动态加载,实现动态链接库的功能。为什么要这么做呢?这源于swc和swf的区别。
在Flash Builder中用Actionscript写的类可以打包成swc或swf,
在Flash CS中制作的元件也可以打包成swc或swf文件,
一个swc或swf文件中可以包含多个类或元件,
每个元件会映射成一个类,
因此,在Flash Builder中的类和在Flash CS中的元件是等价的。
swc和swf文件的使用区别是:
swc 作为类库导入到项目中直接实例化即可使用,就像自带的flash包下面的类一样使用;
swf 则需要用Loader加载进来,再用getDefinition方法取得类后,才可以实例化使用;
使用swc的好处是方便、快捷,缺点是swc文件会编译到项目输出的swf文件里面,
从而增加最终swf文件的大小,也许对于一些小项目这并非缺点;
使用swf的好处是在众多的网页游戏中,玩家没有耐心等待漫长的加载过程,
所以在需要的时候才加载会提高游戏体验效果,而这些实时加载的类或资源就打包成swf文件;
Flash Player有一套专门的加载swf文件的机制,而加载的swc文件则无法解析使用。
使用swf的缺点是麻烦,需要加载,需要处理事件,需要取得相应的类才能使用。
但现在的网页游戏中大都使用swf作为资源文件,swc作为第三方类库使用。
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例