• 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作为第三方类库使用。

     

  • 相关阅读:
    hdu 1568 Fibonacci
    hdu 1286 找新朋友
    mysql错误之2014
    mysql查看语句执行状态的常见函数
    mysql里制造一个错误
    css对html中表格单元格td文本过长的处理
    写js时常见错误
    DOM中的节点属性
    button的默认type居然是submit
    ubuntu手贱改了sudoers权限之后的恢复
  • 原文地址:https://www.cnblogs.com/wonderKK/p/2986249.html
Copyright © 2020-2023  润新知