在Flash中使用双向localConnection时可能导致连接错误的原因是什么?

时间:2008-11-08 10:21:27

标签: flash actionscript localconnection

我正在尝试在同一网页上的两个Flash对象之间设置双向localConnection(LC)。一个对象是AS2,另一个是AS3。

  1. 我正在使用一个LC对象在每个swf上发送和接收数据。 (这应该没关系,对吧?我尝试使用两个对象,一个用于发送,一个用于接收,但是遇到了同样的问题)。
  2. 他们.connect()正确,以便他们都听。 但是当我尝试将数据从AS2 SWF发送到AS3 LC时,我遇到了错误。 95%的情况下会发生这种情况,但有时它会起作用,所以我知道这不是LC名称的问题(我明确检查过)

    有时会发出一两条消息,并且连续的消息会失败。

    关于可能导致什么的任何想法?

    我的目标是创建一对多的连接映射,以便许多AS2 swfs可以连接到一个AS3 swf。这会有问题吗?

3 个答案:

答案 0 :(得分:2)

一个可能的原因是我注意到同一个LC名称的多个监听器似乎无法工作。要查看我的意思,请在两个不同的选项卡上打开this page,您应该会看到两个“发送”SWF都有效,但只会在您打开的第一个选项卡上收到该消息。我猜你只使用两个SWF,但如果他们都试图听同一个LC名称,也许你会看到类似的东西?

另外,我认为LC在某种程度上对于隐藏页面元素内部的SWF是禁用的,甚至可能只是在屏幕外。你在做那样的事吗?

答案 1 :(得分:0)

你不是偶然有两个不同的浏览器打开同一页面吗? LocalConnection将跨浏览器连接,这可能会导致该问题。

通常我所做的是确保LC名称是唯一的,就是在服务器上生成随机LC名称,然后使用FlashVars将该LC名称传递给两个swfs。

它也可能与swf加载的顺序有关。可能是在创建连接的swf尝试连接之后,正在加载侦听连接的swf。然后,另外5%的时间,swf的负载按正确顺序排列。也许如果发生错误,只需尝试再次连接。

答案 2 :(得分:0)

我终于弄明白是什么导致了这个问题。

虽然在AS3中你可以使用相同的LC对象来发送和接收事件,但是在AS2中这样做会在一段时间后给你错误(可能在接收后尝试发送)。