有这么一种情况。三个swf。loading.swf,A.swf,B.swf。他们都在同一个域(同一个域名)下。
并且放在远程服务器上。通过http请求加载loading.swf,loading.swf 加载A。A加载B。(A和B通信会使用事件。事件的类名是:com.company.event.CommunicationEvent)项目开始跑起来。没有问题。
但是开发的时候,我们使用A.swf加载B.swf。B可能已经被别的项目组做好了扔到了远程服务器上。我们直接通过http://域名/B.swf加载它。A加载B。然后开始通信。这个时候我们会发现,不知为什么A和B的通信出现了问题。问题是B::CommunicationEvent无法转化为A::CommunicationEvent。这很明显是命名空间的冲突。 何解呢?
原因是这样的:我们可以这样的理解,当我们从远程把swf加载进来的时候,其实他里面通过as写的代码编译好的类其实并没有被放到A域下面。依然是在远程那个域中。但是组件等等sprite,mc的东西却加载进来了。所以这样就出现了不同的域下相同的事件的类名。所以出现了命名空间错误。只要我们把B.swf和A.swf放在一起。放在相同的目录下就不会出现问题了。
我的上一篇博客《applicationDomain》提到了applicationDomain的问题。说的是将swf放到不同的域下,这种域指的是不同的程序域。当然前提条件指的就是swf必须在相同的目录下面。
分享到:
相关推荐
flash新手: 加载完外部swf文件后,想实现点击flash的同时,后台能捕捉到flash的播放情况,请各位给予指教
FlashAS教程:AS2.0制作加载外部.swf影片的视频播放器.pdf
演试如何实现SWF加载多个SWF,方法不难,主要在思路
Flash课件制作教程-加载SWF文件
NULL 博文链接:https://koda.iteye.com/blog/1716585
在android程序中加载flash动画
flash cs6 as3.0编写的调用外部swf文件,并实现被导入swf文件的内外控制,被导入文件about.swf自带两个控制按钮,about.swf导入index.swf后,通过index.swf中的两个按钮控制about.swf的播放与暂停,并实现了代码的...
NULL 博文链接:https://412599526-qq-com.iteye.com/blog/1267664
flash as3 加载外部swf jpg gif png loader urlloader的通用代码
swf预加载 swf预加载 swf预加载
用ActionScript 3.0加载外部SWF文件,每个按钮对应一个文件,在同一时刻只能加载一个文件,令被加载的文件显示在固定大小的容器内。Adobe Flash CS4格式
flash 加载图片 缩放 flash居中
如何用as3 和 flash prefessional创建preloading程序
此元素为圆形彩色加载,FLASH制作后的swf文件在上传网站后,从客户点开页面到看到效果需要等待网站加载swf文件,加载进度条即是用来显示加载进度所用。
很好的加载 加载外部SWF文件 loader的应用
AS加载一外部SWF调用该swf内部方法,一个Flash中通过AS3代码的Loader对象加载另一个SWF文件,并访问其中的文档类中的方法。 简单示例: 主文件:Main.fla, Main.as 被调用的文件:called.swf, Called.as
单个SWF文件loading加载详解
flash actionscript3 从1个SWF中加载另1个SWF 按1播放SWF中的一段 按2播放另一段动画.rar