• 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 目录中的名称对应)
    
  • 相关阅读:
    Linux学习笔记(二)
    Linux学习笔记(三)
    C++学习笔记一
    汇编总结
    Linux学习笔记(一)
    编辑距离算法
    Linux学习笔记(四)
    Linux学习笔记五
    extjs model的dirty属性能够查询store中某一个行是否改变过
    Ext.grid.Panel一定要有renderTo或autoRender属性,不然页面为空
  • 原文地址:https://www.cnblogs.com/1si2/p/php_amf.html
Copyright © 2020-2023  润新知