Тестирование NetConnection в pure AS3 и BlazeDS
Вовсю тестирую сейчас BlazeDS, проблема в том что все примеры написаны для Flex, поэтому пришлось повозится для реализации примеров на pure AS3.
В тестовом примере создую удаленный объект и вызываю у него функцию hello, в качестве результата возвращающий сериализованный класс User
package { import fl.controls.Button; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.events.NetStatusEvent; import flash.events.SecurityErrorEvent; import flash.net.NetConnection; import flash.net.ObjectEncoding; import flash.net.Responder; import flash.text.TextField; import flash.text.TextFieldType; import flash.net.registerClassAlias; /** * Тестирование NetConnection в pure AS3 и BlazeDS * @author k0t0vich (c) 2009 b_konstantin@list.ru http://islandsworld.ru/ */ public class Main extends Sprite { public var traceTF:TextField; public var urlTF:TextField; public var callTF:TextField; public var btnCall:Button; public var btnConnect:Button; private var connection:NetConnection = new NetConnection(); private var responder:Responder = null; // destination.remoteFunction private var srvCommand:String = "hello.hello"; private var url:String = "http://192.168.10.38:8080/samples/messagebroker/amf"; public function Main():void { // Регистрируем сериализованный пользовательский класс // замена [Remote Class ] во Flex registerClassAlias("flex.examples.hello.User",User); 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 traceTF = new TextField(); traceTF.width = 795; traceTF.height = 400; traceTF.border = true; addChild(traceTF); myTrace("Enter"); urlTF = new TextField(); urlTF.type = TextFieldType.INPUT; urlTF.width = 795; urlTF.y = 405; urlTF.height = 30; urlTF.border = true; urlTF.text = url; addChild(urlTF); btnConnect= new Button(); btnConnect.label = "connect"; btnConnect.y = 440; addChild(btnConnect); btnConnect.addEventListener(MouseEvent.CLICK, connect); callTF = new TextField(); callTF.type = TextFieldType.INPUT; callTF.width = 795; callTF.y = 465; callTF.height = 30; callTF.border = true; callTF.text = srvCommand; addChild(callTF); btnCall = new Button(); btnCall.label = "call"; btnCall.y = 500; addChild(btnCall); btnCall.addEventListener(MouseEvent.CLICK, callRemoteProcedure); responder = new Responder(onRespond); } private function connect(e:Event):void { connection.objectEncoding = ObjectEncoding.AMF3; connection.addEventListener(Event.ACTIVATE, onConnect); connection.addEventListener(Event.DEACTIVATE, onDisconnect); connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); connection.connect(urlTF.text); } private function onDisconnect(e:Event):void { myTrace("onDisconnect: " + e); } private function onConnect(e:Event):void { myTrace("onConnect: " + e); } private function onRespond(ro:User):void { myTrace("onRespond " + ro); } private function callRemoteProcedure(event:MouseEvent):void { connection.call(callTF.text,responder,"Piter"); } public function myTrace(str:String):void { traceTF.appendText(str+"\n"); } private function netStatusHandler(event:NetStatusEvent):void { myTrace("netStatusHandler: "+ event); } private function securityErrorHandler(event:SecurityErrorEvent):void { myTrace("securityErrorHandler: " + event); } } }
package { /** * Пользовательский тестовый класс * @author k0t0vich (c) 2009 b_konstantin@list.ru http://islandsworld.ru/ */ public class User { public var id:int; public var name:String; public function User() { } public function toString():String { var ret:String = "[id=" + String(id) + ", " + "name=" + name+"]"; return ret; } } }
Всего комментариев 0
Комментарии
Последние записи от Котяра
- Страх и ненависть в Нью-Дели или сборка мультипака для arm7 и x86 c Adobe AIR 14 в FB (16.06.2014)
- Нативный EventDispatcher в старлинге (27.11.2013)
- Нужны ошибки компиляции при создании экземпляра синглетона извне? Запросто! (13.09.2013)
- ARP - новый формат упаковки ресурсов (07.02.2013)
- DropShadowFilter и GlowFilter в Starling (16.01.2013)