|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Можно ли соеденить неопределённое кол-во swf через LocalConnection
Всех приветствую! Такой вопрос:
Есть swf файл, на странице их может быть от одного до бесконечности. Нужно сделать, что бы одна флешка, которая загрузится первой смогла управлять всеми остальными. Например получить информацию с сервера, и разослать ответ во все остальные, сколько бы их нибыло. Гуглю примеры, везде пишутся две отдельные флешки, одна принимает, вторая отсылает. Возможно ли реализовать то, что я описал? Спасибо.
__________________
Убейте меня! |
|
|||||
Поковырялся, разобрался, придумал.
Вот, если кому понадобится: 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 ); } } } Объяснять сейчас влом, если надо, пишите, расскажу.
__________________
Убейте меня! |
|
|||||
Регистрация: Apr 2013
Сообщений: 77
|
А нельзя попробовать сделать вот так
private function connectReceiver():void { try { localConnectionReceiver.connect( connectionName + count.toString() ); } catch( error:Error ) { count++; connectReceiver(); } } Сразу отлавливать номер соединения. Чуток выигрыш в скорости должен же быть, если я верно понял Ваш код. Или я глубоко заблуждаюсь ? |
|
|||||
Не вижу, что бы это хоть что-то изменило.
Как вы узнаете заранее сколько флешек уже создали соединение? Каждое соединение должно иметь уникальное имя, по этому сount и плюсуется, пока не дойдёт до свободного.
__________________
Убейте меня! |
|
|||||
Регистрация: Apr 2013
Сообщений: 77
|
Цитата:
private function connectReceiver():void { try { localConnectionReceiver.connect( connectionName + count.toString() ); } catch( error:Error ) { count++; connectReceiver(); } } Или я допускаю ошибку? |
|
|||||
Как и сказано выше, статичная переменная будет хранить значения в пределах одного swf файла, а я же рассматриваю соединение нескольких отдельных swf расположенных например на одной странице.
__________________
Убейте меня! |
|
|||||
Регистрация: Apr 2013
Сообщений: 77
|
Спасибо, не знал, т.к недавно начал изучать. Проверял просто в 1-ом экзепляре, думал и в нескольких так выйдет.
|
Часовой пояс GMT +4, время: 17:15. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|