到目前为止,在我需要与 HTML 进行通信的极少数情况下,我一直在使用 ExternalInterface。
- FlashVars 被认为是更好/更差还是新/旧的做法?
- 或者你什么时候使用其中一个?我应该遵循什么逻辑来帮助我决定使用哪一个?
到目前为止,在我需要与 HTML 进行通信的极少数情况下,我一直在使用 ExternalInterface。
FlashVars 没有好坏之分。只是不一样。它允许您在加载时将一些数据传递给您的 swf 。如果您只需要最初向您传递 swf 一些上下文,那么 FlashVars 就是您想要的。
现在,如果您需要在您的 swf 和它的主机(在大多数情况下是可以运行 Javascript 的 Web 浏览器)之间进行更多交互,ExternalInterface 可以提供帮助。
如果你想把swf里的数据传给宿主机,在AS端使用ExternalInterface.call,在你的html上设置一个对应的JS函数。如果通信相反,请使用 AS 端的 ExternalInterface.addCallback 并在您的 html 上调用此回调的 JS 函数。当然,如果需要,您可以同时使用 call 和 addCallback。不过,大多数时候,我只使用 ExternalInterface.call,因为我主要使用这种机制来调用谷歌分析或其他一些跟踪系统。
ExternalInterface 的一个重要方面是,为了成功,您的 swf 和处理通信的 JS 代码都必须加载。如果您考虑一下,这很明显,但如果您不考虑它可能会导致问题。也就是说,如果您从 JS 调用一个尚未作为回调添加到您的 swf 中的函数,那么......它不会被调用。反过来也是如此,尽管在实践中更为罕见。