zoukankan      html  css  js  c++  java
  • 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作为第三方类库使用。

     

  • 相关阅读:
    NHibernate开源框架Cuyahoga学习之数据访问实现
    Petshop4.0 缓存设计学习
    Jquery实现ToolTip之元素定位
    客户单操作Cookie
    .Net 通过MySQLDriverCS操作MySQL
    NHibernate的基本使用
    提高ASP.NET性能的十大方法
    工作流引擎下基于表达式Tree复杂验证的实现
    C#注册表操作
    WinForm应用程序中的ComboBox实现ReadOnly功能
  • 原文地址:https://www.cnblogs.com/wonderKK/p/2986249.html
Copyright © 2011-2022 走看看