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

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

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

Регистрация: Jan 2007
Сообщений: 302
По умолчанию Не срабатывает SharedObject.getRemote, то есть работает, но не совсем корректно!

Здравствуйте, разбираюсь с SharedObject.getRemote и в целом с серверной частью языка, только сначала нужно понять принцип работы SharedObject. Делаю небольшой пример.

В обычное текстовое поле ввожу текст записываю его в SharedObject.data потом это свойство SharedObject присваиваю обычному TextField в пределах одного приложения все работает прекрасно, если запускаю 2 приложения, то каждое работает по отдельности а я хочу писать в поле одного приложения и обновлять в TextField двух запущенных приложений.
Тоисть хочу сделать общий SharedObject. точнее общее свойство.

Вот кусок кода который все это делает.

Код AS3:
		private var _netCon:NetConnection;
		private var _soCrGame:SharedObject;
		private var t:TextInput;
		private var tf:TextField;
 
		public function Main() {
 
			this._netCon = new NetConnection();
			this._netCon.connect("rtmp://localhost/myApp");
			this._netCon.addEventListener(NetStatusEvent.NET_STATUS,doSO);
 
		}
 
		private function doSO(event:NetStatusEvent):void {
			t = new TextInput();
			addChild(t);
			t.addEventListener(Event.CHANGE, change);
 
			tf = new TextField();
			tf.textColor = 0xFFFFFF;
			tf.x = 100;
			tf.y = 100;
			addChild(tf);
 
			var good:Boolean = event.info.code == "NetConnection.Connect.Success";
			if (good){
			_soCrGame = SharedObject.getRemote("_soCrGame", _netCon.uri, false);
			_soCrGame.connect(_netCon);
			_soCrGame.addEventListener(SyncEvent.SYNC,doUpdate);
			}
		}
 
		private function change(event:Event):void {
			_soCrGame.setProperty ("msg", t.textField.text);
			trace(_soCrGame.data.msg);
		}
 
 
		private function doUpdate (se:SyncEvent):void{
			_soCrGame.setProperty ("msg", t.textField.text);
			tf.text = _soCrGame.data.msg;
		}
Спасибо большое.


Только не переносите в другой раздел, в первую очередь здесь AS3, нет ни строчки серверного AS/

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

Регистрация: Aug 2008
Сообщений: 51
Судя по всему, у вас вполне рабочий код. Только в
Код AS3:
private function doUpdate (se:SyncEvent):void{
	_soCrGame.setProperty ("msg", t.textField.text);
	tf.text = _soCrGame.data.msg;
}
setProperty явно лишнее.

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

Регистрация: Jan 2007
Сообщений: 302
Почему лишнее? Без него не запишется в TextField.

Старый 09.02.2011, 21:01
Killer_13 вне форума Посмотреть профиль Отправить личное сообщение для Killer_13 Найти все сообщения от Killer_13
  № 4  
Ответить с цитированием
Killer_13
 
Аватар для Killer_13

Регистрация: Jan 2007
Сообщений: 302
Для большей ясности вот, скриншот.


Приложение запущено 2 раза, SharedObjectы создаются, все нормально.
Только я хочу, чтоб в TextField отображался текст который набран из двух TextInput-ов.
Изображения
 

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

Регистрация: Aug 2008
Сообщений: 51
Потому что
Код AS3:
	_soCrGame.setProperty ("msg", t.textField.text);
	tf.text = _soCrGame.data.msg;
Равнозначно
Код AS3:
tf.text=t.textField.text;

Старый 09.02.2011, 21:11
Killer_13 вне форума Посмотреть профиль Отправить личное сообщение для Killer_13 Найти все сообщения от Killer_13
  № 6  
Ответить с цитированием
Killer_13
 
Аватар для Killer_13

Регистрация: Jan 2007
Сообщений: 302
Я это понимаю, сейчас свойства полей ввода и вывода, не актуальны, я не прошу помощи в оптимизации кода. Я прошу помощи в разборе полетов с SharedObject-ами. Я намеренно передаю туда текст через SharedObject.

Если можете скажите что нить по сути, ведь как видно из скриншотов все не совсем так как я хочу, мне бы понять это и все, .
Спасибо.

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

Регистрация: Aug 2008
Сообщений: 51
Ладно, расшифровываю. Об оптимизации я ни слова не говорил, ваш код работает именно так, как он написан.

Код AS3:
//Вызываеться при каждом обновлении SharedObject-а любой флешкой.
//Допустим soCrGame.data.msg=='aaa' и t.textField.text='bbb'.
private function doUpdate (se:SyncEvent):void{
        //soCrGame.data.msg=='aaa'
	_soCrGame.setProperty ("msg", t.textField.text);
        //soCrGame.data.msg=='bbb'
	tf.text = _soCrGame.data.msg;
        //tf.text=='bbb' а должен быть 'aaa'.
}
Вы получаете данные от второй флэшки, затираете их и используете данные своей. Естественно, результат такой будто флэшки никак не взаимодействуют между собой.

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

Регистрация: Jan 2007
Сообщений: 302
Под оптимизаций я имел введу, то что вы сказали, что 2 строки можно привести в одну, я думал вы не поняли сути вопроса.
Я думаю это можно как то отслеживать по кодах которые дают флешки.
Или?
А они все таки взаимодействуют, но я нахимичил.
Подскажите тогда как поменять код так, чтоб он работал так как я хочу, спасибо.

Старый 10.02.2011, 12:41
Saulot вне форума Посмотреть профиль Отправить личное сообщение для Saulot Найти все сообщения от Saulot
  № 9  
Ответить с цитированием
Saulot
 
Аватар для Saulot

Регистрация: Aug 2008
Сообщений: 51
Как вариант, если нужна синхронизация обоих текстовых полей:

Код AS3:
private function doUpdate (se:SyncEvent):void{
	t.textField.text = _soCrGame.data.msg;
	tf.text = _soCrGame.data.msg;
}
Либо, если только tf, то:

Код AS3:
private function doUpdate (se:SyncEvent):void{
	tf.text = _soCrGame.data.msg;
}
изменения будут вводиться после первого ченджа t.textField.
А вот с первичной записью:
Код AS3:
private function doUpdate (se:SyncEvent):void{
        if (!_soCrGame.data.msg) {
             _soCrGame.setProperty ("msg", t.textField.text);
        } else {
	     t.textField.text = _soCrGame.data.msg;
	     tf.text = _soCrGame.data.msg;
        }
}


Последний раз редактировалось Saulot; 10.02.2011 в 12:53.
Старый 10.02.2011, 16:41
Killer_13 вне форума Посмотреть профиль Отправить личное сообщение для Killer_13 Найти все сообщения от Killer_13
  № 10  
Ответить с цитированием
Killer_13
 
Аватар для Killer_13

Регистрация: Jan 2007
Сообщений: 302
Пасибо, - попробую.

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

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

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


 


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


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