首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

AMFPhp 与 Flex Builder3 的交互(1)

2012-11-06 
AMFPhp 与 Flex Builder3 的交互(一)好了,让我们写一个HelloWorld程序吧。首先打开amfphp\services目录,新

AMFPhp 与 Flex Builder3 的交互(一)

好了,让我们写一个HelloWorld程序吧。首先打开amfphp\services目录,新建一个HelloWorld.php文件,在文件中输入以下代码:

<?phpclass HelloWorld {function sayHello() {return "Hello World!";}}?>

?好啦,php端,就先这样了。然后我们写<?xml version="1.0" encoding="UTF-8"?><services-config><services><service id="amfphp-flashremoting-service" messageTypes="flex.messaging.messages.RemotingMessage"><destination id="amfphp"><channels><channel ref="my-amfphp"/></channels><properties><source>*</source></properties></destination></service></services><channels><channel-definition id="my-amfphp" 的路径然后右键点击你的项目,选择Properties选项,在弹出的对话框里选择Flex Compiler,在Additional compiler arguments里加入 -services "services-config.xml",如图:
AMFPhp 与 Flex Builder3 的交互(1)

点击src ,打开AMFphp.mxml,好输入以下代码:

<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" backgroundColor="#FFFFFF" viewSourceURL="srcview/index.html">    <mx:RemoteObject id="myservice" fault="faultHandler(event)" showBusyCursor="true" source="HelloWorld" destination="amfphp">        <mx:method name="sayHello" result="resultHandler(event)" />    </mx:RemoteObject>    <mx:Script>        <![CDATA[            import mx.managers.CursorManager;            import mx.rpc.events.ResultEvent;            import mx.rpc.events.FaultEvent;            private function faultHandler(fault:FaultEvent):void            {                CursorManager.removeBusyCursor();                result_text.text = "code:\n" + fault.fault.faultCode + "\n\nMessage:\n" + fault.fault.faultString + "\n\nDetail:\n" + fault.fault.faultDetail;            }            private function resultHandler(evt:ResultEvent):void            {                result_text.text = evt.message.body.toString(); // same as: evt.result.toString();            }        ]]>    </mx:Script>    <mx:Button x="250" y="157" label="sayHello" width="79" click="myservice.getOperation('sayHello').send();"/>    <mx:Button x="250" y="187" label="test fault" click="myservice.getOperation('foo').send(); "/>    <mx:TextArea x="10" y="36" width="319" height="113" id="result_text"/>    <mx:Label x="10" y="10" text="Result:"/></mx:Application>

在<mx:RemoteObject>下呢,定义的就是RemoteObject相关的一些东东.(这话题听着别扭),id这个就不解释了,fault就是当服务调用失败并且操作自身不处理时,调度fault事件。showBusyCursor呢,如果为 true,在执行服务时就会显示忙碌光标。

在这里重点是后两个属性,source和destination。source后面写的是,你在服务器上的文件名,也就是咱们用php写的那个类的文件的名字,即在D:\php\amfphp\services目录下,这个算是咱们本地服务的根目录。如果你要建一个新的目录为hello,然后把HelloWorld.php这个文件放进去,那么我们的程序应该改一下,即source = "hello.HelloWorld" 。destination有代表什么呢?服务的目标。这个值应该与services-config.xml文件中的目标条目匹配,那好,去找一下services-config.xml这个文件吧,看看有这个叫做destination这个东东吗?该 <mx:method />这行了,很简单,这个就是咱们要用的方法啊,名字和php里面方法的名字要一致哦。
另外,需要注意的是在我们的显示界面的代码中,在label为sayHello的<mx:Button />里面,click = "myservice.getOperation('sayHello').send" ,这行代码的意思就是当我们点击按钮的时候,将要执行我们的remoteObject对像中的sayHello方法,并且等待result事件,如果一切顺利,php端会给我们返回一个叫做"Hello world"的字符串,然后,将去调用<![CDATA??.....??]]>里面的ResultHandler函数,接着我们的result_text文本就有任务啦,那就是显示这个字符串。怎么样,很简单吧。(其他的请看源代码注释,我也是刚研究,有错误的地方请指正)

?

好,先不管代码的含义,我们运行一下吧http://127.0.0.1:/amfphp/项目名/bin-debug/hello.html,如果你看见了下面的

热点排行