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

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

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

Регистрация: Jan 2007
Адрес: Минск
Сообщений: 781
Отправить сообщение для джонатан с помощью Skype™
Question Можно ли соеденить неопределённое кол-во swf через LocalConnection

Всех приветствую! Такой вопрос:

Есть swf файл, на странице их может быть от одного до бесконечности. Нужно сделать, что бы одна флешка, которая загрузится первой смогла управлять всеми остальными. Например получить информацию с сервера, и разослать ответ во все остальные, сколько бы их нибыло.

Гуглю примеры, везде пишутся две отдельные флешки, одна принимает, вторая отсылает.
Возможно ли реализовать то, что я описал?

Спасибо.
__________________
Убейте меня!

Старый 14.05.2013, 03:19
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 2  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Думаю вполне может. Не до бесконечности конечно, но думаю ограничено скорее ресурсами машины для запуска n флешек.

Старый 14.05.2013, 03:25
джонатан вне форума Посмотреть профиль Отправить личное сообщение для джонатан Найти все сообщения от джонатан
  № 3  
Ответить с цитированием
джонатан
 
Аватар для джонатан

Регистрация: Jan 2007
Адрес: Минск
Сообщений: 781
Отправить сообщение для джонатан с помощью Skype™
Поковырялся, разобрался, придумал.
Вот, если кому понадобится:

Код AS3:
package  {
 
	import flash.display.Sprite;
	import flash.net.LocalConnection;
	import flash.text.TextField;
	import fl.controls.Button;
	import flash.text.TextFieldAutoSize;
	import flash.events.MouseEvent;
 
 
	public class Main extends Sprite {
 
		private var count:int = 0;
		private var connectionName:String = "myConnection";
		private var localConnectionSender:LocalConnection = new LocalConnection();
		private var localConnectionReceiver:LocalConnection = new LocalConnection();
		private var slaveConnectionsIDS:Array = [];
 
		public function Main() {
			localConnectionReceiver.client = this;
			connectReceiver();
 
			if( count > 0 ) {
				localConnectionSender.send( connectionName + "0", "slaveInit", count );
			} else {
				var button:Button = new Button();
				button.label = "send";
				button.addEventListener( MouseEvent.CLICK, sendMessage );
				addChild( button );
			}
		}
 
		private function connectReceiver():void {
			try {
				localConnectionReceiver.connect( connectionName + count.toString() );
			} catch( error:Error ) {
				count++;
				connectReceiver();
			}
		}
 
		private function sendMessage( event:MouseEvent ):void {
			for( var i:int = 0; i < slaveConnectionsIDS.length; i++ ) {
				localConnectionSender.send( connectionName + slaveConnectionsIDS[ i ], "messageFromMaster", "myMessage" );
			}
		}
 
		public function slaveInit( slaveCount:int ):void {
			trace( count, "init:", slaveCount );
			slaveConnectionsIDS.push( slaveCount );
		}
 
		public function messageFromMaster( message:String ):void {
			var tf:TextField = new TextField();
			tf.text = "message from master swf: " + message;
			tf.autoSize = TextFieldAutoSize.LEFT;
			addChild( tf );
		}
	}
}
Прикрепляю исходники.

Объяснять сейчас влом, если надо, пишите, расскажу.
Вложения
Тип файла: zip LCMaster_controlled_slaves.zip (438.5 Кб, 8 просмотров)
__________________
Убейте меня!

Старый 14.05.2013, 22:43
Idon'tKnow вне форума Посмотреть профиль Отправить личное сообщение для Idon'tKnow Найти все сообщения от Idon'tKnow
  № 4  
Ответить с цитированием
Idon'tKnow

Регистрация: Apr 2013
Сообщений: 77
А нельзя попробовать сделать вот так
Код AS3:
internal static var count:int = 0;
Код AS3:
private function connectReceiver():void {
			try {
				localConnectionReceiver.connect( connectionName + count.toString() );
			} catch( error:Error ) {
				count++;
				connectReceiver();
			}
		}
Т.е не бежать каждый раз, плюсуя count, а знать его заранее.
Сразу отлавливать номер соединения. Чуток выигрыш в скорости должен же быть, если я верно понял Ваш код.

Или я глубоко заблуждаюсь ?

Старый 15.05.2013, 04:16
джонатан вне форума Посмотреть профиль Отправить личное сообщение для джонатан Найти все сообщения от джонатан
  № 5  
Ответить с цитированием
джонатан
 
Аватар для джонатан

Регистрация: Jan 2007
Адрес: Минск
Сообщений: 781
Отправить сообщение для джонатан с помощью Skype™
Не вижу, что бы это хоть что-то изменило.
Как вы узнаете заранее сколько флешек уже создали соединение?

Каждое соединение должно иметь уникальное имя, по этому сount и плюсуется, пока не дойдёт до свободного.
__________________
Убейте меня!

Старый 15.05.2013, 16:19
Idon'tKnow вне форума Посмотреть профиль Отправить личное сообщение для Idon'tKnow Найти все сообщения от Idon'tKnow
  № 6  
Ответить с цитированием
Idon'tKnow

Регистрация: Apr 2013
Сообщений: 77
Цитата:
Сообщение от джонатан Посмотреть сообщение
Не вижу, что бы это хоть что-то изменило.
Как вы узнаете заранее сколько флешек уже создали соединение?
Код AS3:
Main.count
Просто, вот это, пытается создать соединение с нуля до кол-во соединений раз. И когда находит доступное, соединяет:
Код AS3:
private function connectReceiver():void {
			try {
				localConnectionReceiver.connect( connectionName + count.toString() );
			} catch( error:Error ) {
				count++;
				connectReceiver();
			}
		}
Нам этого делать не придется, т.к в
Код AS3:
static var count
уже будет лежать кол-во эти соединений(т.к она статического типа).
Или я допускаю ошибку?

Старый 15.05.2013, 17:13
zuxul вне форума Посмотреть профиль Отправить личное сообщение для zuxul Найти все сообщения от zuxul
  № 7  
Ответить с цитированием
zuxul

Регистрация: Dec 2009
Адрес: 59°13′N, 39°54′E
Сообщений: 445
Записей в блоге: 1
В другой флешке count будет иметь другое значение.

Старый 15.05.2013, 18:50
джонатан вне форума Посмотреть профиль Отправить личное сообщение для джонатан Найти все сообщения от джонатан
  № 8  
Ответить с цитированием
джонатан
 
Аватар для джонатан

Регистрация: Jan 2007
Адрес: Минск
Сообщений: 781
Отправить сообщение для джонатан с помощью Skype™
Цитата:
Сообщение от Idon'tKnow Посмотреть сообщение
Код AS3:
Main.count
Нам этого делать не придется, т.к в
Код AS3:
static var count
уже будет лежать кол-во эти соединений(т.к она статического типа).
Или я допускаю ошибку?
Как и сказано выше, статичная переменная будет хранить значения в пределах одного swf файла, а я же рассматриваю соединение нескольких отдельных swf расположенных например на одной странице.
__________________
Убейте меня!

Старый 15.05.2013, 18:53
Idon'tKnow вне форума Посмотреть профиль Отправить личное сообщение для Idon'tKnow Найти все сообщения от Idon'tKnow
  № 9  
Ответить с цитированием
Idon'tKnow

Регистрация: Apr 2013
Сообщений: 77
Спасибо, не знал, т.к недавно начал изучать. Проверял просто в 1-ом экзепляре, думал и в нескольких так выйдет.

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

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

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


 


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


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