是否所有Flash swf文件都有内置的方法来与Javascript连接?

时间:2011-02-05 16:17:49

标签: javascript interface flash

我不使用Flash,因此对此一无所知,但我的任务是将swf电影嵌入到网页中。我对瑞士法郎的内部设计一无所知,只不过它会播放一部短片。我想控制swf何时开始播放,倒回它(它将无限播放),甚至可能将其缓存在浏览器中。它将成为基于Javascript驱动的图像旋转的一部分,其中<img>元素将暂时替换为swf的<object>

我的问题是swf文件在编译时是否有内置的Javascript接口(我认为是Actionscript?),还是这完全取决于作者决定包含这样的代码?如果 依赖于作者包含的代码,我是否可以运行任何可能的测试来查看可用的方法?

1 个答案:

答案 0 :(得分:1)

有趣的问题。不幸的是,对此没有任何简单的答案 - 有一百万种方法可以在Flash中执行任何操作,并且根据原始开发人员的不同,您可以尝试各种各样的操作。

Flash Player在本机API中提供了一个ExternalInterface方法,因此每个Flash应用程序都可以调用javascript。如果开发人员对其进行了配置,您甚至可以在flash中注册一个内部回调方法来响应javascript命令 - 这样您就可以双向工作。

那就是说,除非开发人员因为你想要它而特意把它放进去,否则他不太可能这样做,而且无论如何你也无法看到它。

根据swf的构建方式,您可以选择几种方法。首先,您可以尝试将LOOP = TRUE参数添加到嵌入代码中(更多信息here)。如果这是一个基本的时间轴动画,或者你的视频剪辑的帧被转储到时间轴上并且它使用Flash自己的动画工具来播放它,那么这可能就是你所需要的。

如果这不起作用,事情会变得复杂一些。您可以尝试使用任意数量的Flash反编译器中的一个来反编译.swf - 这可能会让您深入了解哪些方法,结构如何等等。尽管如此,它并不是一个很好的科学 - 你可以参与其中反复试验。

如果在内省swf的过程中你学习了,例如,它有一个名为“视频”的对象,那么你可以编写一个包装器.swf,加载你的目标swf并拥有你的包装器接口用JavaScript。如果您要查找的只是一个循环,那么视频对象甚至可能具有自动重复属性或类似的效果。

这有点长,但我希望它有所帮助。如果您有任何疑问,请发表评论!

相关问题