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

跨SWF脚本调用的简单探究

发布时间:2020-12-15 18:14:23 所属栏目:百科 来源:网络整理
导读:前几天有同事做坐骑相关的工作时问了相关的问题,大意是一个子SWF动画文件,在第一帧上面写了stop(),如何在加载进来后调用让其开始运动? 深入研究了一下相关的API文档,发现其实比较简单的,但是涉及到应用程序域ApplicationDomain与安全域SecurityDomain,

前几天有同事做坐骑相关的工作时问了相关的问题,大意是一个子SWF动画文件,在第一帧上面写了stop(),如何在加载进来后调用让其开始运动?

深入研究了一下相关的API文档,发现其实比较简单的,但是涉及到应用程序域ApplicationDomain与安全域SecurityDomain,跨SWF调用时如果处理不好可能会有安全问题

我也是看了kevinCao翻译的文章后才稍微明白了点。网址如下:

http://kevincao.com/2010/11/security-domains/

其中讲了fp沙箱的作用:1.安全考虑2,使用沙箱来避免命名冲突的问题

Security.allowDomain()与crossDomain.xml的区别,以及ApplicationDomain是SecurityDomain的一部分,

其中对使用SharedEvent来进行跨SWF脚本调用还讲了一些,文档中SharedEvent相关联的类有ShaderJob,就是用ShaderJob来使PixelBender与fp主线程异步执行,Away3d 4.X里对于pixel bender的Shader好像就是这么做的。


下面是我的测试:

打开Flash pro新建一个文档命名为fuck1.fla,在其中创建动画并在第一帧上写上stop()之后生成swf文件,如下图:


创建一个文档命名为fuck2.fla,在其中写上对应加载代码,关键是第七行,之后编译会发现报错

其主要原因是flash pro默认使用代码严禁模式,这样能够提前侦测出可能在运行阶段报错的代码,我们可以设置一下其模式,选择文件——Actionscript设置在打开的对话框中,取消勾选严谨模式和警告模式(不推荐这样做,这里只是演示)


之后编译通过你会发现当前swf加载了fuck1.swf,并且fuck1.swf开始运行了它里面的动画播放了出来,代码截图以及运行效果如下:

SWF加载进SWF后可以转化为MovieClip,使用MovieClip可能更好点


运行如下:

(编辑:李大同)

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

    推荐文章
      热点阅读