Что может вызвать ошибки подключения при использовании двунаправленного localConnection во Flash? - PullRequest
1 голос
/ 08 ноября 2008

Я пытаюсь установить двунаправленную локальную связь (LC) между двумя флэш-объектами на одной веб-странице. Один объект - это AS2, а другой - AS3.

  1. Я использую один объект LC для отправки и получения данных о каждом SWF. (Это не должно иметь значения, верно? Я попытался использовать два объекта, один для отправки и один для получения, но получил ту же проблему).

Они .connect () правильно, так что они оба слушают. Но я получаю ошибки, когда пытаюсь отправить данные из AS2 SWF в AS3 LC. Это происходит в 95% случаев, но иногда это работает, поэтому я знаю, что это не проблема с именами LC (я проверял, очевидно)

Иногда проходят одно или два сообщения, и последующие сообщения терпят неудачу.

Есть идеи, что может вызвать это?

Я стремлюсь создать карту соединений «многие к одному», чтобы многие SWF-файлы AS2 могли подключаться к одному SWF-серверу AS3. Это будет проблемой?

Ответы [ 3 ]

2 голосов
/ 10 ноября 2008

Одной из возможных причин является то, что я заметил, что несколько слушателей с одним и тем же именем LC, похоже, не работают. Чтобы понять, что я имею в виду, откройте эту страницу на двух разных вкладках, и вы должны увидеть, что оба «отправляющих» SWF-файла работают, но сообщение принимается только на первой открытой вами вкладке. Я предполагаю, что вы используете только два SWF, но если они оба пытаются слушать одно и то же имя LC, возможно, вы видите что-то похожее?

Кроме того, я считаю, что LC в некотором роде отключен для SWF, которые находятся внутри невидимых элементов страницы, или, возможно, даже за пределами экрана. Вы делаете что-нибудь подобное?

0 голосов
/ 12 ноября 2008

Я наконец понял, что вызвало проблему.

Кажется, что, хотя в AS3 вы можете использовать один и тот же объект LC для отправки и получения событий, выполнение этого в AS2 через некоторое время приведет к ошибкам (вероятно, при попытке отправить после получения).

0 голосов
/ 11 ноября 2008

У вас случайно нет двух разных браузеров, открытых для одной и той же страницы? LocalConnection будет подключаться через браузеры, которые могут вызвать эту проблему.

Обычно для обеспечения уникальности имен LC я генерирую на сервере случайное имя LC, а затем передаю это имя LC обоим swfs с помощью FlashVars.

Это также может иметь отношение к порядку загрузки SWF. Возможно, что SWF, прослушивающий соединение, загружается после того, как SWF, создающий соединение, пытается подключиться. Затем, остальные 5% времени, загрузка SWF в правильном порядке. Возможно, если произойдет ошибка, попробуйте подключиться снова.

...