加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

对于swc文件的动态加载

发布时间:2020-12-15 18:10:17 所属栏目:百科 来源:网络整理
导读:对于swc我们都知道他其实是一个压缩文件,解压以后分解为一个catalog.xml文件和一个library.swf文件 现在我们首先来讲解一下swf的加载: 使用的加载方式为:Loader,加载完成,使用loader.contentLoaderInfo.applicationDomain.getDefinition("Name")来获取

对于swc我们都知道他其实是一个压缩文件,解压以后分解为一个catalog.xml文件和一个library.swf文件

现在我们首先来讲解一下swf的加载:

使用的加载方式为:Loader,加载完成,使用loader.contentLoaderInfo.applicationDomain.getDefinition("Name")来获取在一个swf中的类。

也可以使用evt.target.applicationDomain.getDefinition("Name")来获取swf中的类。因为evt.target是loader.contentLoaderInfo,因为在添加监听的时候是这样子的。所以是这样的,然后使用var ClassName :* =?evt.target.applicationDomain.getDefinition("Name");来得到Name这个类。后面就可以使用ClassName这个东西了,代表的是在swf中的类Name了。

这样的方法同时也适用于从swc解压出来的swf文件,在加载“library.swf”的时候,我们只要在最后的evt.target.applicationDomain.getDefinition("swf中的类")这样就可以获取swf(swc)中的类了。

上面的是一般的方法,即获取swf文件中的类的方法

下面来讲解一下如何从swc中获取相关的类。

分为两种情况来讲解:

(1)在你的工程中建立了一个flex库项目:无论你设置的库的“框架链接”是

这两个任何的一项,好像都没有什么异同,随便怎么设置都可以,但是在你建立一个as3项目的时候,如果你设置

是合并到代码中,那么在你的as3工程中是随便可以用的,你在flex库中的任何类。但是如果你设置的是外部,虽然你可以在as3工程中进行编辑,编译,也不会报错,因为你将flex库工程,加到了你的as3中去了,所以他认为可以找的到,但是在运行的时候,因为是外部的形式弄进来的,所有运行时会报错,说找不到某个类。

解决的方案有两种:[1]将as3项目中的引用类型该为合并到代码中[2]将swc加载到当前的swf中去,使用的方法是

private var m_fzip:FZip;

m_fzip = new FZip;
m_fzip.addEventListener(Event.COMPLETE,onFZipLoad);

m_fzip.load(new URLRequest(url));

private function onFZipLoad(e:Event):void
{

var f:ByteArray = m_fzip.getFileByName("library.swf").content;
var ldr:Loader = new Loader;
var lc:LoaderContext = new LoaderContext(false,ApplicationDomain.currentDomain)
ldr.loadBytes(f,lc);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE,onLibLoad);
}

private function onLibLoad(evt :Event)

{


}

只要在这个swf中有swc中swf的加载就可以了,这样,只要你在这个as3项目中使用flex的类就可以了。这个过程详单于c++中的,将dll放到该程序的路径下一样。

(2)同样的你也可以采用动态加载swc的方法,这时候你不需要将as3添加flex库项目,你只是在上面代码中需要必要的修改

private function onLibLoad(evt :Event)

{

//在这个地方来调用要使用的类

evt.target.applicationDomain.getDefinition("Name");这样就可以了

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读