Flash 与 php 使用 amfphp

创建 Flash 项目

使用 Flash Builder 创建一个项目。

创建 Flash 项目时,选择服务器技术为 PHP,并配置好服务器的 Web 根文件夹及根 URL 地址(这里设置根文件夹时,文件夹名称要与项目名称不同)。然后将输出文件夹放在根文件夹内。

项目创建完后,可以加上一个 Button 来测试一下是否正确创建。代码如下:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">

    <fx:Script>
        <![CDATA[
            protected function buttonClick(event:MouseEvent):void {
                button.label = "hello";
            }
        ]]>
    </fx:Script>
    <s:Button id="button" label="Click Me" click="buttonClick(event)"/>
</s:Application>

代码输入完成,运行(Ctrl+F11)应该正赏,然后进行 amfphp 的配置。

amfphp 配置

http://www.silexlabs.org/amfphp/ 下载 amfphp。本博下载的是 amfPHP 2.1 版本。

将下载的压缩包中 Amfphp, BackOffice 放入到 Web 根文件夹中。此时 Web 根文件夹中应该有如下几个文件:

f:/project/agiletaskweb/
+- BackOffice
+- Amfphp
\- bin-debug

输入 http://localhost/Amfphp 可以看到

点击链接 If you are looking for the ... 可以看到已经提供的服务:

接下来,加上自己的服务。在 Amfphp/Services 目录中创建一个 MyService.php 内容如下:

<?php
class MyService {
  public function echoback($param){
    return $param;
  }
}
?>

这是一个将传入的参数返回给客户端的服务(echo 服务)

再刷新服务列表界面,可以看到创建的服务已经生效。

使用 RemoteObject 调用服务

回到 Flash Builder,将主文件的代码修改为如下:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">

    <fx:Script>
        <![CDATA[
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            protected function buttonClick(event:MouseEvent):void {
                remoteObject.echoback("Receive from MyService");
            }

            protected function resuleHandler(event:ResultEvent):void {
                button.label = event.result.toString();
            }

            protected function falseHandler(event:FaultEvent):void {
                button.label = "Fault";
            }

        ]]>
    </fx:Script>

    <fx:Declarations>
        <s:RemoteObject id="remoteObject" destination="amfphp" source="MyService"
                        endpoint="http://www.agiletask.com/Amfphp/"
                        result="resuleHandler(event)" fault="falseHandler(event)"/>
    </fx:Declarations>
    <s:Button id="button" label="Click Me" click="buttonClick(event)"/>
</s:Application>

运行,点击按钮,即可以正确显示从服务器传回来的结果。

RemoteObject 的主要变量:

endpoint          # 指定服务所在 URL,指定为 http://domain/Amfphp
destination       # 指定服务处理类,指定为 amfphp
source            # 指定服务名称(与 Amfphp/Services 目录中的名称对应)

posted on 2013-08-30 10:24 一是二 阅读(...) 评论(...) 编辑 收藏

导航

统计