在Flex2中使用NetConnection的一些注意事项
在使用ActionScript3的NetConnection类连接Flash Media Server或者Remoting的时候,需要注意以下几点:
1.注意设定AMF版本
ActionScript3默认使用的是AMF3,而ActionScript2和ActionScript1使用的是AMF0,如果不指定NetConnection的AMF版本,就会出现连接失败。指定的方法如下:
1NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;
上面的代码会修改所有的NetConnection实例的默认AMF版本。
如果只需要修改一个NetConnection实例的AMF版本,代码如下:
1public var NC:flash.net.NetConnection;
2NC = new NetConnection();
3NC.objectEncoding = flash.net.ObjectEncoding.AMF0;
2.获取onStatus状态值
在ActionScript2中的方法已经不能使用,要获取NetConnection实例的连接状态,必须使用NetStatusEvent事件类,代码如下:
1import flash.events.NetStatusEvent;
2import flash.net.NetConnection;
3
4private function statusHandler(evt:NetStatusEvent):void{
5 trace(evt.info.code);
6 switch(evt.info.code){
7 case "NetConnection.Connect.Rejected":
8 var appmsg:String = (evt.info.application == undefined) ? "" : evt.info.application;
9 mx.controls.Alert(appmsg);
10 break;
11 case "NetConnection.Connect.Failed":
12 mx.controls.Alert("连接失败");
13 break;
14 case "NetConnection.Connect.Closed":
15 //
16 break;
17 case "NetConnection.Connect.Success":
18 trace("连接成功!");
19 break;
20 }
21}
22
23private function login():void{
24 adminNC = new NetConnection();
25 adminNC.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
26 adminNC.connect("http://localhost/test/test1", userName, userPWD);
27}
3.在NetConnection实例中定义被呼叫方法
在ActionScript2中,我们可以使用myNC.functionName=function(){}来定义NetConnection对象中被呼叫的方法。但是,在ActionScript3中,NetConnection并非动态类,不能用这样的方法添加被呼叫方法,而必须使用client属性实现(接上例):
1import flash.events.NetStatusEvent;
2import flash.net.NetConnection;
3
4public function loginSuccess($adminLevel:int):void{
5 trace("loginSuccess被调用,$adminLevel:" + $adminLevel);
6 this.dispatchEvent(new Event("loginSuccess"));
7}
8
9private function login():void{
10 adminNC = new NetConnection();
11 adminNC.client = this;
12 adminNC.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
13 adminNC.connect("http://localhost/test/test1", userName, userPWD);
14}
当登录成功后,FMS端会调用客户端NC的loginSuccess方法,并传回管理员的级别。在这里,为client属性赋值,告知被调用的loginSuccess方法在哪个对象中。被调用的方法必须被声明为public。
还有一些和SharedObject和NetStream类相关的注意事项,可以看这里。
- 文章ID:333
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/flex-netconnection/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。