上一篇 | 下一篇

director、php和remoting三结合

发布: 2007-1-25 15:41 | 作者: amith | 来源: aougu | 查看: 185次

  以往director要读写数据库除了使用数据库相关的xtra以外,还可以使用 getNextText 或 postNetText来进行,自从有了 flash remoting技术以后,我们也可以利用这个技术来进行数据库读写。你可以在director中插入一个写好连接远端remoting服务的flash文件,把要写的数据传递给flash去call远端remoting服务即可。
,Cy+j"E NP!Q1~0`
q#v}bP   本次主要使用php版本的remoting服务器amfPHP来讲解。假设你已经安装好了amfPHP环境,amfPHP可以查询www.amfphp.org获得相关信息。奥古多媒体5T~4gI[UG
奥古多媒体;r8~q7I"N&r]
一、flash 程序编写奥古多媒体 XU TkJ8lo0sK

L(bpg2Vt$C 第一帧写上如下脚本:
4iGxnb8@ Q 奥古多媒体"p,oC DV;G:y$l#E
import mx.remoting.*;
Otj5amt import mx.rpc.*;
/L$\D#{ |~3c{}bQ 奥古多媒体'b7^2xr\
import mx.remoting.debug.NetDebug; //引入NetDebug类供调试用,测试通过后可以去掉
mBwH ?&S0NQ0h import mx.utils.Delegate;
#X8^.cy_ F
+l(er,B~b'c var gatewayUrl = "http://192.168.1.1/gateway.php" //定义amfPHP gateway路径
`KM(v [ L Jv var result;奥古多媒体I,[LQ7r}&k
var username;
Y"Cf,{p?*LK var password;
.y0M(G6et
!u5IDKp9} V ///////////////奥古多媒体O&Wyu KQh W6M
var result = "11,22,33,44,55,66,77,88";
IZB}ZU&M!\ w"k var username="www.aougu.com";奥古多媒体x#H3[W)nD4T2G
var password="amith";
K&IS8g(W(e&z!F //以上是在flash里头模拟的director端要传输的内容,这里作为测试flash是否写的正确用,在flash编译测试成功后要删掉奥古多媒体v@A f4j B*W,D
///////////////奥古多媒体8@A4s+wT@+iQ
奥古多媒体Z] k7y A7e e6S
NetDebug.initialize(); //初始化NetDebug
x1I? Or.w v7z:w 奥古多媒体#aRA;o4o~
//创建一个远程ScoreSet服务奥古多媒体'Y!N\CEc'l
var service:Service = new Service(gatewayUrl, null, 'scoreset'); 奥古多媒体@c j#P1R

"oN V6a~C;m //定义游戏分数设定函数
T*l8^:JmTb,Z function gameScoreSet()
?.L%B$d!s0P {
,]|yy ]@c //检查服务的连接是否合法奥古多媒体^J$@$l)q
service.connection.setCredentials(username,password);奥古多媒体;@5Y0U`2`+Uk#o

.Z/BLn$_n*A] var pc:PendingCall = service.setScore(result);奥古多媒体rU4V|1_4w2D&w
pc.responder = new RelayResponder(this, "handleGetResult", "");
Rmwb!f3MG4?n_ }
T!E,UJ-N|'v 奥古多媒体3wiT [$`jBT
//remoting回调函数奥古多媒体u$x7pU?
function handleGetResult(re:ResultEvent)
_.ct-mI%E8sC {
6} g6r+g$? s)j 奥古多媒体VHB+Ly
getURL("lingo:gameScoreResult \"" + re.result + "\"");
G&Z)a:T&G5Z sc
*y1vk&GKh { }
/i PSx/XqWT 奥古多媒体h5|U`i
第三帧写入:奥古多媒体 [@$p.m*a*coL
奥古多媒体WuRv%~{"V
result = result.split(","); //将传递过来的信息分割成数组奥古多媒体#S&}%r[x4Q$t]
gameScoreSet(); //执行第一帧定义的gameScoreSet函数奥古多媒体[Vl'^w9o9p$?
奥古多媒体h K6{B%@0Q:s
第二、四帧写:奥古多媒体S't#{7[!nc?
奥古多媒体!|n G-gMjo
stop();奥古多媒体5Oar i}+}

P(~lXTL? 二、Remoting 服务器端 php 程序编写
]*U3D}AB+^j
!@)I8h!y.n@,JK(` <?php奥古多媒体7F Sjkk}H$q
奥古多媒体 ^ P l'C Y~N
define ("USERNAME","root");奥古多媒体'u|4Yj+PBC1Q
define ("PASSWORD","");奥古多媒体bq_\!E3NI
define ("HOSTNAME","192.168.1.1");奥古多媒体sgf^ S9M$~
define ("DATABASE","www.aougu.com");
%?/|~0|do d
M [YMF%i ])y //声明ScoreSet类,需要和客户端声明的服务名字一致奥古多媒体!c"A*T*W2tB.T
class ScoreSet 奥古多媒体6j:h,maA8^1[N
{奥古多媒体;?)Bl&G!T,`Z
function ScoreSet()
q!fi4u;m/G3v {奥古多媒体&I7B&H IB
$this->methodTable = array(奥古多媒体T'u In\GV(f^
"setScore" => array(奥古多媒体\1uy5Pq,l6kC
"access" => "remote", 奥古多媒体&_ dJxsE
"arguments" => array ("result"),"roles" => "admin" )奥古多媒体w-[8P"O:w
);奥古多媒体I%^'A7D5_5`nP
奥古多媒体4Z+A$C7S ^
$this->conn = mysql_pconnect(HOSTNAME, USERNAME, PASSWORD);
LC I[cl mysql_select_db (DATABASE);奥古多媒体T1w9h3XSPg
}
`7V/n#G5N 奥古多媒体 EK0z4C U5d&{2x6q

vT9Y/wzH function setScore($result)
ROn8O#M5XNu&N
(cJ(hD \LXv {
U(u/UL.vw,] for($i=0; $i<sizeof($result); $i++)
} K$k)J$| pT#R echo $result[$i];奥古多媒体$b_EyWvp/Z
//数据库操作部分这里略
)[pKlt?kZ(\!y
\ q[,Nq.a(Q4`6r } 奥古多媒体&^.?3f l5cbsk%Y/L
奥古多媒体%@:z-H#z8d&SP:B
//身份验证奥古多媒体8[p+d(i6D*b
function _authenticate($user, $pass){奥古多媒体A-b w+IJ1YJ
if($user == "www.aougu.com" && $pass == "amith"){奥古多媒体V9n_bM S
return "admin";
,YQ'u&`rd`K } else {
K,`_%Ig h%U@ return false;
O2p!E3X/` }
?-CeCZp.I+T@o kD }奥古多媒体|-hN,x cghE[
}
fZ$WL0fci } ?>奥古多媒体'f+_0ANp@UqP

}"r|$Rm 奥古多媒体&KU:Dg:](w ^1HGP'Lg
三、Director里的脚本编写
/i&z/U/NE
Ab^;j o_2I 完成一、二实际上已经基本完成了,director这里只需要插入flash,然后传递参数给flash sprite即可。奥古多媒体+XE1Qn.].n
奥古多媒体 XP3a@4e!P#`1Hq
setVariable(sprite 1, "result", "11,22,33,44,55,77")
Rm|"B/v9or6v setVariable(sprite 1, "username", "www.aougu.com")
^/L6w5eKV setVariable(sprite 1, "password", "amith")
\Irm7j\nX sprite(1).callframe(3)
.F+le)BF G!p c
[O2`u5V7d;v 如果你是使用director mx2004,你也可以直接呼叫 flash sprite里头的 gameScoreSet()函数。

字号: | 推荐给好友

 

评分:0

我来说两句

seccode


音乐
落叶 画心 放生 天亮了 牡丹江 那滋味 擦肩而过 怀念过去 北京欢迎你 突然好想你 吻的太逼真 说好的幸福呢 坐上火车去拉萨 如果爱能早些说出来
愚爱 心碎 稻香 带我走 醉赤壁 魔杰座 我还想她 为你而活 一定要爱你 等爱的玫瑰 原谅我一次 越单纯越幸福 最后一次的温柔 给我一首歌的时间
白狐 光荣 火花 下雨天 小酒窝 樱花草 为你写诗 无可取代 无情的温柔 寂寞才说爱 忘不掉的伤 爱上你是个错 陪你一起看草原 地球人都知道我爱你
城府 假如 花海 兰亭序 爱太痛 舍不得 你若成风 女人如烟 外滩十八号 我们的纪念 摇滚怎么了 和寂寞说分手 爱上你是我的错 爱情里没有谁对谁错