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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.10.2008, 18:54
outfoxer вне форума Посмотреть профиль Отправить личное сообщение для outfoxer Посетить домашнюю страницу outfoxer Найти все сообщения от outfoxer
  № 1  
Ответить с цитированием
outfoxer
[+3 25.01.07]
 
Аватар для outfoxer

Регистрация: Sep 2002
Сообщений: 46
Отправить сообщение для outfoxer с помощью ICQ
Question Искажение объекта типа Event при передаче через LocalConnection

Передаю объект типа Event через LocalConnection, принимающая сторона получает непонятный объект у которого нет ни одного свойства

Код:
var lc1:LocalConnection = new LocalConnection();
lc1.connect('lc1');
lc1.client = this;

var lc2:LocalConnection = new LocalConnection();
var e:Event = new Event('EVENT_TYPE');
trace('sending: ', e, e.type)
lc2.send('lc1', 'f', e);

function f(p)
{
	trace('receiving: ',p, p.type)
}
выводит:

Код:
sending:  [Event type="EVENT_TYPE" bubbles=false cancelable=false eventPhase=2] EVENT_TYPE

receiving:  [object Object] undefined
Может кто сталкивался с этим? Как можно передать объект типа Event по LC?

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

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

Старый 21.10.2008, 20:11
outfoxer вне форума Посмотреть профиль Отправить личное сообщение для outfoxer Посетить домашнюю страницу outfoxer Найти все сообщения от outfoxer
  № 3  
Ответить с цитированием
outfoxer
[+3 25.01.07]
 
Аватар для outfoxer

Регистрация: Sep 2002
Сообщений: 46
Отправить сообщение для outfoxer с помощью ICQ
как это нельзя вот передача объекта:

Код:
var lc1:LocalConnection = new LocalConnection();
lc1.connect('lc1');
lc1.client = this;

var lc2:LocalConnection = new LocalConnection();
var e = {type:'EVENT_TYPE', someVar:'value'};
trace('sending: ', e, e.type)
lc2.send('lc1', 'f', e);

function f(p)
{
	trace('receiving: ',p, p.type)
}

все отлично работает и передается без искажений:
Код:
sending:  [object Object] EVENT_TYPE

receiving:  [object Object] EVENT_TYPE

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

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

Старый 22.10.2008, 00:36
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 5  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
если важна именно информация
Цитата:
[Event type="EVENT_TYPE" bubbles=false cancelable=false eventPhase=2]
можно так
Код:
package {
	import flash.events.Event;
	import flash.net.LocalConnection;
	import flash.display.MovieClip;
	public class Main extends MovieClip {
		public var f:Function
		public function Main() {
			var lc1:LocalConnection = new LocalConnection();
			lc1.connect('lc1');
			lc1.client = this;


			var lc2:LocalConnection = new LocalConnection();
			var e:Event = new Event('EVENT_TYPE');
			trace('sending: ', e, e.type);
			lc2.send('lc1', 'f', e.toString());

			f = function (p){
			trace('receiving: ',p)
			};
		}
	}
}
Вообще, факт передачи уже сам по себе евент. Так что смысл передавать именно объект Event? Тем более, что это не простой объект в смысле простого набора именованых свойств и их значений, silin прав. Скажем MovieClip тоже не передается по ЛЦ как таковой. А вот массив передать можно.
Код:
package {
	import flash.events.Event;
	import flash.net.LocalConnection;
	import flash.display.MovieClip;
	public class Main extends MovieClip {
		public var f:Function
		public function Main() {
			var lc1:LocalConnection = new LocalConnection();
			lc1.connect('lc1');
			lc1.client = this;
			var lc2:LocalConnection = new LocalConnection();
			var e:Array =  [1,'2', null];
			lc2.send('lc1', 'f', e);
			f = function (p){
			trace(p[0],typeof(p[0]),p[1],typeof(p[1]),p[2],typeof(p[2]))
			};
		}
	}
}
Согласно спецификации AMF3, а ЛЦ использует его, можно передавать
Цитата:
undefined, null, false, true, integer, double, string, xml-doc, date, array, object, xml, byte-array
Можно уточнить что реализовано уже сейчас.


Последний раз редактировалось alexcon314; 22.10.2008 в 00:43.
Старый 22.10.2008, 01:11
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 6  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
мля. читаем доку. передаются только объекты, которые можно серилизовать через AMF. любой экземпляр класса передаётся как обычный Object. тоесть передаётся анонимный объект с динамическими свойствами.

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

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

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


 


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


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