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

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

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
По умолчанию NetConnection BlazeDS

Час добрый форумчане!

Задача, подключиться и вызывать нужные мне методы.

В одном из блогов на этом форуме, а именно блог котяры, нашёл ответ на мою задачу, но он не работает, но и за это ему спасибо, хоть что то!

Разбирался с исходником флекса, но так и не понял как он работает хотя свою задачу он мне выполнил!
А я же пытаюсь сделать это на AS.

что пытаюсь сделать я:

Код AS3:
package 
{
	import flash.display.Sprite;
 
	import flash.net.registerClassAlias;
	import flash.net.Responder;
	import flash.net.NetConnection;
	import flash.net.ObjectEncoding;
 
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.events.NetStatusEvent;
	import flash.events.IOErrorEvent;
	import flash.events.SecurityErrorEvent;
 
	public class ConnectToServerBlazeds extends Sprite 
	{
		public function ConnectToServerBlazeds() 
		{
			// не могу понять как это работает и для чего?
			registerClassAlias("место где находиться сласс", Имя_Класса);
 
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			 //entry point
 
 			var btnCall:Button	= new Button();
				btnCall.label	= "CALL";
				btnCall.x		= 50;
				btnCall.y		= 50;
				btnCall.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void {
 
					var nc:NetConnection	= new NetConnection();
						nc.objectEncoding	= ObjectEncoding.AMF3;
 
						nc.addEventListener(NetStatusEvent.NET_STATUS,	NET_STATUS);
						nc.addEventListener(IOErrorEvent.IO_ERROR,		IO_ERROR);
 
						nc.connect("http://путь к коннекту/amf");
 
					function IO_ERROR (e:IOErrorEvent):void {
						trace('no connect!');
					}
 
					function NET_STATUS(e:NetStatusEvent):void {
						trace('NET_STATUS:\t' + e);
					}
 
				});
			addChild(btnCall);
		}
	}
}
Если я правильно понял то для банального подключения ни чего больше не надо.
Помогите разобраться.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

Старый 13.11.2011, 22:25
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 2  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Цитата:
registerClassAlias
Регистрирует для класса, так сказать, короткое имя (точнее псевдоним), и в общем используется при маппинге (что-то типа автосериализации) объектов (чаще всего VO) приходящих с сервера и обратно отсылаемых. В таком случае получаются как-бы одни и теже классы на клиенте и на сервере.
__________________
http://www.chessmax.ru

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
ясно, спс. А в основном классе его тоже нужно регистрировать?

Добавлено через 3 минуты
И ещё вопрос, почему статус не отвечает?
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

Старый 13.11.2011, 22:46
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 4  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Цитата:
ясно, спс. А в основном классе его тоже нужно регистрировать?
Это как бы вообще не обязательно, можно не использовать маппинг, мы в своих проектах, пока что не используем.
Я к сожалению не разу не пробовал BlazeDS, только amfphp, хотя по идее различий не должно быть.
Цитата:
И ещё вопрос, почему статус не отвечает?
К сожалению затрудняюсь ответить на Ваш вопрос, возможно вместо:
Цитата:
nc.connect("http://путь к коннекту/amf");
нужно
nc.connect("http://путь к коннекту/amf/getway.php"); Или что-то типа, а пример вместе BlazeDS идет? И какой там путь?
__________________
http://www.chessmax.ru

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
там флексовый пример, и он работает через "mx:RemoteObject" как этот объект работает я так и не разобрался.

Добавлено через 5 минут
Цитата:
Сообщение от Inet_PC Посмотреть сообщение
nc.connect("http://путь к коннекту/amf/getway.php"); Или что-то типа, а пример вместе BlazeDS идет? И какой там путь?
нет, серв на JAVA и там нет .php вообще.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

Старый 14.11.2011, 03:07
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 6  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Взял простейший пример отсюда.
Там также flex пример.
Вот моя pure as3 реализация:
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.events.NetStatusEvent;
	import flash.net.NetConnection;
	import flash.net.ObjectEncoding;
	import flash.net.Responder;
	import flash.text.TextField;
 
	public class PureAS3BlazeDS extends Sprite
	{
		private var tf:TextField;
		private var nc: NetConnection;
		public function PureAS3BlazeDS()
		{
			addChild(tf = new TextField());
			tf.width = 1000; 
			tf.border = true;
 
			nc  	= new NetConnection();
			nc.objectEncoding = ObjectEncoding.AMF3;
			nc.addEventListener(NetStatusEvent.NET_STATUS,	onNetConnectionNetStatus);
			nc.addEventListener(IOErrorEvent.IO_ERROR,		IO_ERROR);
			nc.addEventListener(Event.ACTIVATE, onConnect);
 
			nc.connect("http://localhost:8080/BlazeDs/messagebroker/amf");
 
			addEventListener(Event.ADDED_TO_STAGE, onAdded);
		}
 
		private function onAdded(e: Event):void
		{
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
		}
 
		private function onConnect(e: Event):void
		{
			traceIt('connected!');
			nc.call('HelloWorld.sayHello', new Responder(onResult, onStatus));
			nc.removeEventListener(Event.ACTIVATE, onConnect);
		}
 
		private function IO_ERROR (e:IOErrorEvent):void {
			traceIt('no connect!');
		}
 
		private function onNetConnectionNetStatus(e : NetStatusEvent) : void 
		{
			traceIt("code: " + e.info.code); 
		}
 
		private function callFunc():void
		{
 
		}
 
		private function onResult(...args):void
		{
			traceIt(args[0]);
		}
 
		private function onStatus(...args):void
		{
 
		}
 
		private function traceIt(value: String):void
		{
			tf.appendText('\n' + value);
		}
	}
}
PS. Из дебага не работает, нужно класть в webapps/BlazeDs. Почему уже сил разбираться нет.
__________________
http://www.chessmax.ru

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Цитата:
Сообщение от Inet_PC Посмотреть сообщение
Взял простейший пример отсюда.
PS. Из дебага не работает, нужно класть в webapps/BlazeDs. Почему уже сил разбираться нет.
Спасибо, в целом уже сам инфы накопал.
Если кому понадобиться скину простенький, уже готовый классик.

Код AS3:
package  
{
	import flash.events.Event;
	import flash.events.EventDispatcher;
 
	import flash.net.Responder;
	import flash.net.NetConnection;
 
	/**
	 * ...
	 * @author stweet
	 */
 
	public class SVRLoader extends EventDispatcher
	{
		static public const VO_OUT  :String = 'out';
		static public const VO_ERROR:String = 'error';
 
		private var nc:NetConnection;
 
		private var _path	:String = '';
		private var _service	:String = '';
		private var _command	:String = '';
		private var _param	:Object = null;
		private var _content	:Object	= null;
 
		// ////////////////////////////////////////////////////////////////////////////////
		public function SVRLoader () { }
 
		// ////////////////////////////////////////////////////////////////////////////////
		public function connect ():void {
			nc = new NetConnection();
			nc.client	  = this;
			nc.objectEncoding = 0;
			nc.connect(path);
		}
 
		// ////////////////////////////////////////////////////////////////////////////////
		public function send ():void {
			// Собственно тут и была моя проблема,
			// не зная, пытался передать параметры и ждал ответа сервера при соединении,
			// чего было делать не надо.	
			if (param != null) nc.call(service + "." + command, new Responder(result, fault), param);
			else nc.call(service + "." + command, new Responder(result, fault));
		}
 
		// ////////////////////////////////////////////////////////////////////////////////
		private function fault(ar:Object):void { dispatchEvent(new Event('error')); }
 
		// ////////////////////////////////////////////////////////////////////////////////
		private function result(ar:Object):void {
			content = ar;
			dispatchEvent(new Event('out'));
		}
 
		// ////////////////////////////////////////////////////////////////////////////////
		public function AppendToGatewayUrl (ar:*):void {  }
 
		// ////////////////////////////////////////////////////////////////////////////////
		public function get content():Object { return _content; }
		public function set content(ar:Object):void { _content = ar; }
 
		public function get path():String { return _path; }
		public function set path(ar:String):void { _path = ar; }
 
		public function get service():String { return _service; }
		public function set service(ar:String):void { _service = ar; }
 
		public function get command():String { return _command; }
		public function set command(ar:String):void { _command = ar; }
 
		public function get param ():Object { return _param; }
		public function set param (ar:Object):void { _param = ar; }
	}
}
Получился свой "RemoteObject" на AS.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!


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

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

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


 


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


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