【问题标题】:Does localConnection in flash player randomly fail sometimes?Flash播放器中的localConnection有时会随机失败吗?
【发布时间】:2009-07-31 09:21:43
【问题描述】:

我有两个使用 localConnection 相互通信的 Flash 电影,将一个对象从 swfA 传递到 swfB。这似乎工作正常,但偶尔会失败。我们拥有的唯一信息是状态事件以error 的级别触发,没有其他信息。一旦连接失败,它将继续这样做。

我不知道为什么会这样,但这不是安全问题(两部电影都在同一个域上运行),所有通信都包含在 try..catch 中。

有没有人见过这个,或者任何人都可以提出一种在电影之间交流的替代方法吗?我试过使用ExternalInterface,但是对于发送的更新数量来说太慢了。

【问题讨论】:

  • 他们确实失败了。正如肖恩在下面提到的,这通常是因为名称冲突......但也有其他情况。他们“工作”,但他们肯定不可靠。 :(

标签: apache-flex flash localconnection


【解决方案1】:

我们似乎已经解决了问题,但不完全确定原因(我们可能只是大大减少了失败的数量)。我们实施了以下措施:

  • 通过将所有内容移至速度不成问题的 externalInterface 来减少 localConnections 的数量
  • 通过在每次刷新页面时附加时间戳(而不是重复使用相同的 ID)为每部电影生成一个全局唯一 ID。这似乎大大减少了失败的发生(尽管它们仍然发生)
  • 在 LocalConnection id 中添加了“_”(请参阅​​文档了解原因)。不确定这是否有帮助,但似乎是一个不错的做法。
  • 每次发生故障时强制重新连接。同样,实施以提高稳健性是一件好事,但由于现在没有发生故障,因此不负责直接修复错误。

所以没有决定性的解决方法,似乎这些解决了问题。

【讨论】:

    【解决方案2】:

    LocalConnection 太疯狂了。它通过您的计算机并在全球范围内与剪辑进行通信。这意味着它们甚至不必在同一页面上。例如,如果您正在运行一个空中应用程序,您可以与基于浏览器的应用程序进行通信。

    请记住,id 是全局的,如果它们发生冲突,它们会出错。当我两次打开同一个 swf 时,我就发生了这种情况(因为它侦听同一个 id)。即使它们位于不同的页面上,也会发生这种情况。

    另一种选择是让您的 swfs 轮询服务器并通过数据库进行通信。不确定这是否有帮助。我尽量避免使用 LocalConnection :)

    【讨论】:

      【解决方案3】:

      我也遇到了同样的问题。我的解决方案是设置一个计时器,尝试重新连接连接,直到找到它。非常简单的计时器,如果连接成功,它会设置e.target.stop()

      【讨论】:

        猜你喜欢
        • 2012-12-19
        • 1970-01-01
        • 2011-05-14
        • 2011-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多