如果你已经看懂使用Fluorine实现Flex与.NET通信这篇文章,你基本上明白了怎样实现Flash与Amfphp的通信。只是在Web应用的根目录不同而已,如下图。

我们改进了一下mxml,为sayHello方法添加了result 事件fault 和事件,当调用远程方法成功时就会侦听到result 事件并执行Actionscript代码块中的resultHandler方法,反之则会侦听到fault事件并执行faultHandle方法。代码加下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
<mx:RemoteObject id="service" destination="amfphp"
source="flashServices.remoting.HelloWorld" showBusyCursor="true" >
<mx:method name="sayHello" result="resultHandler(event)"
fault="faultHandler(event)" />
</mx:RemoteObject>
<mx:Script>
<![CDATA[
import mx.managers.CursorManager;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
private function resultHandler(re:ResultEvent):void
{
lblResult.text = re.result.toString();
}
private function faultHandler(fault:FaultEvent):void
{
CursorManager.removeBusyCursor();
lblResult.text = "Message:" + fault.fault.faultString;
}
]]>
</mx:Script>
<mx:TextInput id="txtName" />
<mx:Button label="Say Hello" click="service.sayHello(txtName.text)" />
<mx:Label id="lblResult" fontSize="18"/>
</mx:Application>
运行测试一下,label将显示来自Amfphp Flash Remoting的问候。整一个错误出来,比如修改一下方法名或服务路径,再运行程序,label将显示错误信息。可见,这样的代码更像在Flash中使用Flash Remoting,更有扩展性。
admin#flashas.net (#为@) 联系QQ:
:40777822
浙ICP备06033001号