![]() |
|
||||||||||
|
|||||
|
Час добрый форумчане!
Задача, подключиться и вызывать нужные мне методы. В одном из блогов на этом форуме, а именно блог котяры, нашёл ответ на мою задачу, но он не работает, но и за это ему спасибо, хоть что то! Разбирался с исходником флекса, но так и не понял как он работает хотя свою задачу он мне выполнил! А я же пытаюсь сделать это на AS. что пытаюсь сделать я: 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); } } } Помогите разобраться.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь! |
|
|||||
|
Цитата:
__________________
http://www.chessmax.ru |
|
|||||
|
ясно, спс. А в основном классе его тоже нужно регистрировать?
Добавлено через 3 минуты И ещё вопрос, почему статус не отвечает?
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь! |
|
|||||
|
Цитата:
Я к сожалению не разу не пробовал BlazeDS, только amfphp, хотя по идее различий не должно быть. Цитата:
Цитата:
nc.connect("http://путь к коннекту/amf/getway.php"); Или что-то типа, а пример вместе BlazeDS идет? И какой там путь?
__________________
http://www.chessmax.ru |
|
|||||
|
там флексовый пример, и он работает через "mx:RemoteObject" как этот объект работает я так и не разобрался.
Добавлено через 5 минут нет, серв на JAVA и там нет .php вообще.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь! |
|
|||||
|
Взял простейший пример отсюда.
Там также flex пример. Вот моя pure 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); } } }
__________________
http://www.chessmax.ru |
|
|||||
|
Цитата:
Если кому понадобиться скину простенький, уже готовый классик. 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; } } }
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь! Последний раз редактировалось stweet; 14.11.2011 в 12:14. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|