amfphp与flash的交互详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Amfphp with flash
flash连接数据必须透过一些语言例如:PHP,Java,ASP等等的方法,简称“Flash Remoting“,本篇只针对PHP(Amfphp是以PHP为主)。
以下为各种Remoting的官方网址:
AMFPHP (方式:PHP , 网址: )
OpenAMF(方式:Java , 网址: )
WebORB(方式:.NET,Java,Ruby on Rails,网址: )
Fluorine(方式:.NET,)简单的说说Flash如何与数据库通讯如下图:
首先我们要先去下载AMFPHP的数据夹:
网址:/project/showfiles.php?group_id=72483#files
在这个地方我们主要是下载AMFPHP1.9,当然我们要下载AMFPHP1.2也可以,但是我不建议使用1.2,因为1.9的功能比1.2强太多了(待会会说),而且他们还有一些明显的差异。
下载好了以后,就把数据夹解压缩放在WebServer的根目录底下就OK了( 例如:Apache的www数据夹里),不需要安装任何东西,然后你只要在网址上输入http://localhost/amfphp/browser/你就会看到一个很特别的环境就是debug php的好地方XD, 那么我就介绍一下这个环境:
这工具debug非常好用,而且还是debug php,还能看到回传结果,而且还能仿真连接数据库接收和发送数据,不怕老实说PHP在Dreamweaver里是没有办法debug的,所以这工具能帮我们节省很多很多时间(要善用)。
那么我们要把写好的PHP放去哪里呢?只要放去amfphp数据夹里的services里面就OK了。这样我们在上图的那个debug环境下就能看到写好的PHP了。可是编写的PHP要有一定的
规格,因为这是要和flash通讯的,首先第一个就是档案的名称要和里面的Class一样,格式一定要和以下一样:
文件名称Counter //文件名称和Class一样
class Counter {
function() <—-要写的程序
}
但是在Amfphp1.2和Amfphp1.9有一个区别的地方那就是 1.9版本不用在定义$this->methodTable,这个很重要,因为如果你要把1.2的PHP拿来1.9使用是必须把这个定义给拿掉。简单来说就是这样:这是1.2程序代码:
$this->methodTable = array(
“getData” => array(
“description” => “Returns addressBook data”,
“access” => “remote”,
“returntype” => “recordSet”
)
}
function getData(){
$rs = 1);
return $rs;
}这是1.9程序代码:
function getData(){
$rs = 1;
return $rs;
}
在1.9里面只要像上面这样定义结果就出来了
最后我们把以上amfphp1.9的制作成php档案,然后放在services的数据夹里,最后用浏览器看看结果,你会发现当你按下call后,会出现1,那么使用amfphp的第一步就开始了^^。Flash(AS3.0程序)
import .URLRequest;
import Connection;
import .Responder;
var gateway:String = “http://localhost/amfphp/gateway.php”; //连接amfphp里的gateway.php
var connection:NetConnection;
var responder:Responder; responder = new Responder(onResult, onFault); //数据传送成功或失败
connection = new NetConnection;
connection.connect(gateway);
connection.call(”Counter.getData”, responder); //call 我们写的PHP(文件名称.子程序名称)
function onResult(onResult:Object):void { //数据传送成功时
var saveData:Object=onResult;
trace(saveData);
}
function onFault(fault:Object):void { //数据传送失败时trace(”failt”);
}
以上这些地方要注意就是我们一定要把gateway设成“amfphp/gateway.php”,因为当我们把PHP放在amfphp/services的数据夹里时,只要在flash里连接去gateway.php,它就会自动帮我们寻找PHP,简单来说非常的方便。
那么我们要怎么知道我们要连去那一个PHP呢?所以在以上第11行的connection.call(“Counter.getData”, responder);中我们呼叫Counter.php里面的getData function,这样它就会去寻找这份PHP的档案了。
为了方便起见我把PHP档案程序代码写在这里:
class Counter{
function getData(){
$rs = 1;
return $rs;
}
}
?>
这样我们就大功告成了,最后按照方法,把PHP放在amfphp/services的数据夹里,然后把flash档案发布成swf,你就会看到flash输出为1,那么这个和PHP的联系就完成了,
最后一个问题是如果PHP传给flash的数据是数组(Array)时我们要怎么把数据分出来?其实是一样的,只要写成saveDat[0],然后以此类推,就可以了。
Amfphp with flash(2)
首先我们用以下的SQL码来建立一个名叫―testflash‖的表,并且在里面有一个叫―testing―的目录。————————我是分隔线————————————–
– phpMyAdmin SQL Dump
– version 2.10.2
–
–
–主机: localhost
–建立日期: Mar 03, 2008, 02:40 PM
–服务器版本: 5.0.45
– PHP 版本: 5.2.3
SET SQL_MODE=‖NO_AUTO_VALUE_ON_ZERO‖;
–
–数据库: `testflash`
–
–——————————————————–
–
–数据表格式:`testing`
–