2

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

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

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

4

3 回答 3

1

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

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

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

于 2009-08-11T11:20:31.333 回答
0

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

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

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

于 2009-07-31T18:57:47.900 回答
0

I just had the same problem. My solution is to set a timer that tries to reconnect with the connection until it was found. Very simple timer with a function that sets the e.target.stop() if the connection succeeds.

于 2012-01-30T20:54:38.507 回答