Flash Remoting ActionScript 3.0简介

自从使用Fluorine实现Flex与.NET通信发表后,有不少网友给我来信,想知道怎样利用使用Fluorine实现Flash CS3与.NET通信。因为我近来工作忙,虽安装Flash CS3已经好长时间了,却一直没写这篇教程,请支持本站的网友多多包涵!

Flash Remoting ActionScript 3.0是我个人提出的,主要是相对于Flash Remoting ActionScript 1.0&2.0,核心技术为:ActionScript 3.0 + AFM3 /AFM0。

一、先看代码:

import flash.net.NetConnection; 
import flash.net.Responder; 
import flash.events.ErrorEvent; 
//创建一个NetConnection对象 
var nc:NetConnection = new NetConnection(); 
//设置AMF版本 
nc.objectEncoding = ObjectEncoding.AMF3; 
//打开到服务器的连接 
var gatewayURL:String = "http://localhost:8088/flashservies/Gateway.aspx"; 
nc.connect(gatewayURL); 
nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 
submit_btn.addEventListener(MouseEvent.CLICK,clickHandler); 
function clickHandler(evt:MouseEvent) { 
    //创建一个新的 Responder 对象,并将该对象传递给 NetConnection.call() 
    var resp:Responder = new Responder(onSucceed,onFailed); 
    //调用服务器端的远程方法 
    nc.call("tutorials.remoting.HelloWorld.sayHello",resp,txtName.text); 
} 
//声明处理报告状态或错误的的侦听器函数 
function netStatusHandler(evt:NetStatusEvent):void { 
    if (evt.info.code =="NetConnection.Call.Failed") { 
        result_txt.text= "连接远程服务失败"; 
    } 
} 
//声明处理调用成功的侦听器函数 
function onSucceed(re:String):void { 
    result_txt.text = re; 
} 
//声明处理调用失败的侦听器函数 
function onFailed(fe:Object):void { 
    result_txt.text = "调用远程服务方法失败"; 
  
}

后台代码还是一样,见使用Fluorine实现Flash与.NET通信。这是最终的效果

二、说明

  1. 我们使用Responder 对象作为NetConnection.call的传递参数,以处理来自与特定操作成功或失败相关的服务器的返回值。
  2. 我们使用NetStatusEvent事件对象来返回连接状态,并将其将作为参数传递给事件侦听器,它只有一种类型的状态事件:NetStatusEvent.NET_STATUS。NetStatusEvent事 件对象的info属性用来描述对象的状态或错误情况的属性,它有code 和level 属性,此处我们利用code可能的字符串值来判断网关Url是否正确。不过,我觉得Adobe的工程师好像将NetConnection.Connect.Failed和NetConnection.Call.Failed代码属性弄反了,大家可以参考一下帮助文件。

三、现在我们再来对比一下Flash Remoting ActionScript 1.0&2.0与Flash Remoting ActionScript 3.0。

  1. 目前Flash cs 3不支持Macromedia Flash Remoting组件的安装,但将Flash Remoting ActionScript 1.0/2.0类放在安装Flash 9安装目录的Classes文件夹中,也还是支 持Flash Remoting ActionScript 1.0/2.0语法的。大家可以试一试!
  2. 在Flash Remoting ActionScript 1.0中,我们使用NetConnection对象创建远程连接,使用NetServices对象来定义网关Url并创建远程服务;Flash Remoting ActionScript 2.0除了这种用法外,更推荐使用Service对象来实现远程服务;在Flash Remoting ActionScript 3.0中,使用的仍然是NetConnection对象,用法与Flash Remoting ActionScript 1.0相似。
  3. ActionScript 3.0中推荐使用AMF3,可以通过NetConnection对象的objectEncoding属性来设定。

发表评论