Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.07.2006, 20:59
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 11  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
да я, собственно, об этом и говорил (#5),
но меня заинтриговал следующий пост(#6), вот я и подумал, что чего-то не догоняю и можно обойтись без JS, об этом и спрашивал..

Старый 24.07.2006, 21:24
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 12  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Цитата:
Сообщение от silin
__etc, че-то я туплю: откуда в твоей схеме возьмутся уникальные id чтоб не мешать клонам в соседнем окне броузера ?
Объясняю:

1. Есть две флешки -- А и Б. Флешка А имеет прямое соединение А>Б, а флешка -- Б>А, для перессылки данных в обе стороны. Плюс каждая из флешек имеет вспомогательное соединение, через который отправляется id. Имя вспомогательного соединения фиксировано.

2. При запуске флешки А или Б происходит попытка отправки (вызов некоего метода, допустим ping) в вспомогательное соединение сгенерённого id (в данном случае "lc_"+(new Date().getTime())), предполагая, что данное вспомогательное соединение открыто другой флешкой.

3. На onStatus смотрим, была-ли отправка удачной или нет. Если нет, то открываем вспомогательное соединение и ждём аналогичных действий из пункта 2 от второй флешки. Если же посылка удачна, то открываем основное соединение (заданного типа, обратное или прямое, в флешке А -- прямое, во флешке Б обратное, с именем lc_XXXXXXXXX или lc_XXXXXXXXX_rv соответственно). Вторая же флешка, получив id (произошёл вызов метода ping) от первой, открывает своё основное соединение заданного типа (прямое или обратное) и закрывает окрытое ею вспомогательное соединение (оно уже не нужно на этот момент). Собственно, соединение установлено.

Надеюсь, так яснее.

Что касается записи имени соединения через JS, то мне нужно было обойтись без скриптов и иметь возможность запускать флешки в двух отдельных окнах Flash-плеера. JS, конечно, будет проще, но описанный мною метод можно реализовать в одном классе, который будет использоваться в обеих флешках.


Последний раз редактировалось etc; 24.07.2006 в 21:27.
Старый 24.07.2006, 21:36
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 13  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Вариант без двусторонней связи:

1. Делаем попытку отправки id в вспомогательное соединение

2.1 При неудачной попытке, открываем вспомогательное соединение и ждём id от второй флешки. Если данная флешка является вещателем, то при получении id сохраняем этот id для вещания в основное соединение. Если же флешка не является вещателем, то при получении id, открываем соединение с этим id. После получения закрываем вспомогательное соединение.

2.2 При удачной попытке отправки, если данная флешка является вещателем, то сохраняем этот id для вещания в основное соединение. Если же флешка не является вещателем, то при получении id, открываем соединение с этим id.

Как видите, это всё можно реализовать в одном и том же классе, который будет использоваться в обеих флешках с флагом вещателя или нет.
Беспокоится по поводу того, что может произойти сбой в момент ожидания одной из флешек id-шника от другой не стоит, хотя бы потому что два окна браузера одновременно открыть нельзя.


Последний раз редактировалось etc; 24.07.2006 в 21:43.
Старый 24.07.2006, 22:00
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 14  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
дада так ясно, спасибо..

Старый 24.07.2006, 22:23
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 15  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
если исходить из предположения что "два окна браузера одновременно открыть нельзя", все может быть проще:
в обоих флешках :
Код:
var n=0;
var lc=new LocalConnection();
while(!lc.connect("lc"+n))n++;
lcName="lc"+(n-n%2);//его и открываем для связи
для первой пары -lc0,для второй-lc2 и т.д...

зы: только если окна нельзя открыть одновременно, то загрзузиться флешки могут ведь как попало (легкие из обоих окон обгонят тяжелые, например): получим бардак..

Старый 24.07.2006, 23:28
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 16  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Осталось посчитать процент тех, кто будет открывать более одного окна

Старый 25.07.2006, 17:28
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 17  
Ответить с цитированием
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
в вопросе автор выразился вполне ясно:

"На странице есть две взаимодействующие, посредством LocalConnection, флешки."

в этом свете делать какие-то классы ради решения этой задачи нецелесообразно. мы ведь ВСЁ РАВНО вводим флэшки джаваскриптом. причем, возможно, пользуемся SWFObject. дописать туда раздачу уникальных айдишников - это по одной строчке кода для каждой флэшки.

Старый 25.07.2006, 17:39
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 18  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Нокс, ну мы же предложили два варианта решения. Один самый простой и рациональный, второй посложнее, но позволяет обойтись без JS.

Вот и всё. Понятно, что скриптом проще, с этим никто не спорит.

Старый 25.07.2006, 17:43
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 19  
Ответить с цитированием
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
Цитата:
Сообщение от __etc
Вот и всё. Понятно, что скриптом проще, с этим никто не спорит.
ок, ок, я не говорю, что твое решение "плохое". просто меня смущает то, что сама ситуация, когда нужно обходиться без дж.с. на _странице_ не возникнет. :) а в этом свете немного странно предлагать решение для такого случая.

Старый 25.07.2006, 18:25
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 20  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Цитата:
Сообщение от Nox Noctis
просто меня смущает то, что сама ситуация, когда нужно обходиться без дж.с. на _странице_ не возникнет.
После 11 апреля сего года тебя "смущать" это не должно
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 08:28.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.