Macromedia Flash Remoting for Flash MX 2004 ActionScript 2.0 速成 ( 搭配 ColdFusion )
万用ActionScript
| import mx.remoting.*; import mx.rpc.*; //服务器传回数据时,会调用此函数 function myTestFunction_Result (re:ResultEvent):Void { trace("返回数据:" + re.result);} //发生异常时,会调用此函数 function myTestFunction_Fault (fault:FaultEvent):Void { trace("异常信息:" + fault.fault.description);} //建站一个连接到127.0.0.1根目录的myCFCDir文件夹中的myCFC.cfc var myService:Service = new Service("http://127.0.0.1/flashservices/gateway",null,"myCFCDir.myCFC",null,null); //调用myService所指向的CFC中的myTestFunctino函数,并传入”123”作为参数 var myPendingCall:PendingCall = myService.myTestFunction("123"); //当这个函数有回传值时,使用一个RelayResponder对象来对它做出处理.这个对象在处理时会调用我们在最前面做的myTestFunction_Result 或 myTestFunction_Fault 函数 myPendingCall.responder = new RelayResponder(this,"myTestFunction_Result","myTestFunction_Fault"); |
万用CFC
| <cfcomponent output="no"> <cffunction access="remote" name="myTestFunction" output="false"> <cfargument name="var_01" required="yes" type="any"> <cfset tmp = var_01 & var_01> <cfreturn tmp> </cffunction> </cfcomponent> |
制作步骤:
1.首先当然先确定ColdFusion MX 6.1 ( 或 BlackStone - ColdFusion MX 7 )、Flash MX 2004 及 Flash Remoting AS2 都安裝好了,且 ColdFusion 服務有在执行中.
2.在网站的根目录中新建一个文件夹叫myCFCDir,里面新建一个文件叫myCFC.cfc(若使用ColdFusion内建的网站服务器,网站根目录是预设在ColdFusion文件夹下的「wwwroot」文件夹)
3.将myCFC.cfc的内容改成上面的万用CFC的内容.
4.用http://127.0.0.1/myCFCDir/myCFC.cfc网址查看CFC的语法是否正确, ColdFusion会要求先输入密码,这是为了安全起见.
5.在Flash MX 2004 新建一个文件.在菜单栏上选「Windows」「Other Panels」「Common Libraries」「Remoting」,会多出一个元件库,里面有两个Flash Remoting AS2的元件,将RemotingClasses拖一个到场景上,再将它删除,这样他就会出现在这个新的文件的元件库中.
6.将上面的万用ActionScript复制到第一帧的动作面板中,并针对你的环境将代码做适当调整.
7.执行该Flash测试是否有trace出「返回数据: :123123」,如果有就成功了.
8.要做别的Flash Remoting 就直接拿上面的万用 ActionScript 及万用 CFC 修改就可以了。
Flash的运作过程:
首先由Flash来看,一开始就载入了我们需要的这些类,然后定义了两个函数,分别用于处理ColdFusion的返回值,以及在发生错误时做相关的处理(trace出错误讯息)
接着建立 Service对象myService,这是一个直接指向CFC的对象,在这里例子中它指向IP为127.0.0.1的服务器(就是本机)根目录下的myCFCDir文件夹中的myCFC.cfc这个文件. 「/flashservices/gateway」是ColdFusion来处理Flash Remotion呼叫的路径,无论你的CFC放在这台主机的哪里,都不会改变.
再来执行myService指向CFC中的myTestFunction函数,并将返回的PendingCall对象的实例myPendingCall,这个对象是Flash在送出对CFC的调用时就立刻建立的,可以将它想像成调用CFC的这个动作,而非CFC返回的结果.
最后我们建立一个RelayResponder对象,并把它指给myPendingCall的 responder。这是专门来处理ColdFusion的返回值,处理的方法就是一开头建立的两个函数,所以在建立这个对象的同时,将那两个函名名称传给它了
当CFC传回数据时, myPendingCall就会调用自己的responder方法,并决定执行成功还是失败的函数来处理这些数据.