php和flash的交互有多种方式,目前最常用的还是AMFPHP,毕竟AMF是Adobe自己推出的规格,在压缩比例上,都会有很好的优化。目前社交游戏中更加体现了这个黄金组合的魅力。
直接上代码`//flash跟amfphp通信的简单例子
package {
import flash.display.MovieClip;
import fl.events.*;
import flash.events.*;
import flash.text.TextField;
import flash.net.NetConnection;
import flash.net.Responder;
public class Main extends MovieClip {
private var gateway:String = "http://192.168.1.166/flashtest/as2php/amfphp/gateway.php";//amfphp gateway.php文件路径
private var connection:NetConnection;
private var responderSet:Responder;
private var responderGet:Responder;
public function Main() {
//注册鼠标事件
btnSet.addEventListener(MouseEvent.CLICK, setData);
btnGet.addEventListener(MouseEvent.CLICK, getData);
//设置responder
responderSet = new Responder(onResultSet, onFault);
responderGet = new Responder(onResultGet, onFault);
connection = new NetConnection;
//链接gateway
connection.connect(gateway);
}
//发送数据给amfphp
public function setData(_evt:MouseEvent):void {
//获取输入框内的数据
var info1 = txtInput1.text;
var info2 = txtInput2.text;
var info3 = txtInput3.text;
//调用amfphp的函数
connection.call("EasyAMF.setData", responderSet, info1,info2,info3);
txtResponse.text = "Sending Data to AMFPHP";
}
//接收来自amfphp的数据
public function getData(_evt:MouseEvent):void {
connection.call("EasyAMF.getData",responderGet);
txtResponse.text = "Geting data from AMFPHP";
}
//成功调用amfphp函数后的处理函数
private function onResultSet(result:Object):void {
txtResponse.text = String(result);
}
private function onResultGet(result:Object):void {
var aryRs:Array=new Array(); //用一个数组来接收返回的记录
aryRs=result["serverInfo"]["initialData"];
rsinput1.text=aryRs[0][1]; //显示数据
rsinput2.text=aryRs[0][2];
rsinput3.text=aryRs[0][3];
}
//调用amfphp函数失败后的处理函数
private function onFault(fault:Object):void {
txtResponse.text = String(fault.description);
}
}
< ?php
class EasyAMF
{
public function EasyAMF(){
global $host,$dbTable, $dbPass,$dbId;
$host = "localhost";
$dbId = "root";
$dbPass = "";
$dbTable = "amfphp";
$dblink = mysql_connect($host,$dbId,$dbPass);
mysql_select_db($dbTable);
mysql_query("SET NAMES UTF8");
if(!$dblink)
{
die('Connection Impossible:' . mysql_error());
}
}
public function setData($info1,$info2,$info3)
{
$sql="INSERT INTO info (id ,info1 ,info2 ,info3)VALUES (NULL , '$info1', '$info2', '$info3');";
$rs=mysql_query($sql);
if(!$rs==1){
return "failed";
}else{
return "success";
}
}
public function getData()
{
$sql="SELECT * FROM info ORDER BY id DESC LIMIT 1";
$rs=mysql_query($sql);
return $rs;
}
}
?>