有没有办法将外部swf加载到闪存中的沙盒中?

时间:2009-03-30 13:18:55

标签: flash actionscript-3 sandbox

我正在使用Loader在我的所有Flash网站中加载Flash广告横幅。我无法控制横幅中的代码,因为它们来自广告商。

我想加载它们,以便它们无法在有限区域之外的网站上搞乱鼠标事件。广告客户横幅上的邋code代码不应在任何情况下终止我网站的功能。

奖金问题,如何解决横幅与我的主网站不同的帧速率造成的问题? (或者是否有一种简单的方法可以将当前绘制的动画转换为我的帧速率,同时保持动画速度与以前相同?)

以前必须有人处理过这些问题。

最好的方法是什么?

谢谢!

3 个答案:

答案 0 :(得分:1)

理论上,加载的swf无权访问父对象和变量。 You can read more about Security.allowDomain here。除非您在横幅的域上执行allowDomain(),否则它将无法调用您网站中的对象。

您还可以执行以下一项或多项操作:

  • 为横幅的Loader对象创建一个遮罩,以防止横幅扩展超过其指定的空间

  • 使用mouseChildren属性来禁用Loader.content对象的所有鼠标事件,然后在Loader上添加单击事件,以导航到横幅的目标页面

    < / LI>

我自己玩过帧速率,但无济于事。在所有情况下,孩子似乎都遵循父母的帧率。唯一有效的方法是停止子进程的自动帧速率提升并通过TimerEvent进行,但这会产生额外的处理器负载。

答案 1 :(得分:1)

加载外部swf时,请确保将其加载到单独的安全域和子应用程序域中。这样它将无法访问舞台鼠标和键盘事件(以及某些其他事件),并且不会有任何类定义冲突。

查看此文档:Developing and loading subapplications

答案 2 :(得分:0)

我刚刚发现了一个关于此问题的Adobe PDF:Loading Applications