所需组件下载:Flash8 OR Flash2004 可以从 Macromedia 下载,然后是 AS2 remoting components ,正常安装即可。最后,你需要的是 Installing amfphp(只需把 amfphp 解压到站点能访问到的目录即可,比如安装到:Document Root/fserver/ 目录下,那么如果你能正常访问 http://localhost/fserver/gateway.php 并且没有出错的话,那么恭喜你,一切顺利)...
安装完毕后,你可以在 Flash 菜单(这里以 Flash8 为例)“Windows > Other Panels > Service Browser”使用最新的 Server Brower ,你也可以在“Windows > Others > Libraries > Remoting Classes”看到新装入的两个库:RemotingClasses and RemotingDebugClasses 。然后,我们就可以开始编写测试程序了。
假设我们在 Flash 舞台中拉入一个 Button 创建实例叫 submit ,新建一个层:script ;然后写入如下代码:
import mx.remoting.
*
;
import mx.rpc.
*
;
import mx.remoting.debug.NetDebug;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
var
gatewayUrl:String
=
http:
//
localhost/fserver/gateway.php;
var
member:Array
=
[
'
ma
'
,
'
mb
'
,
'
mc
'
];
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
function
testRemote ()
...
{
NetDebug.initialize();
var _service:Service = new Service(gatewayUrl, null, 'HelloWorld', null , null);
var pc:PendingCall = _service.test(member);
pc.responder = new RelayResponder(this, "handleResult", "handleError");
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
function
handleResult (re:ResultEvent)
...
{
_res = re.result;
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
for (i=0; i<_res.length; i++) ...{
trace('The result ' + i + ' is: ' + _res[i]);
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
function
handleError (fe:FaultEvent)
...
{
trace('There has been an error');
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
_root.submit.onPress
=
function
()
...
{
testRemote();
}
如果你熟悉 AS 的话,看完以上代码应该能明白百分之七八十,再看看以下 PHP 代码你就基本应该全明白了,我们在 fserver/services 目录下建立 HelloWorld.php 文件,代码如下:
<?
php
class
HelloWorld
{
function
HelloWorld()
{
$this
->
methodTable
=
array
(
"
test
"
=>
array
(
"
access
"
=>
"
remote
"
,
"
description
"
=>
"
Pings back a array mess
"
)
);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
function
test(
$members
) {
$m_array
=
array
();
if
(
is_array
(
$members
)) {
foreach
(
$members
as
$member
) {
array_push
(
$m_array
,
'
<name:
'
.
$member
.
'
>
'
);
}
return
$m_array
;
}
else
{
return
'
Is not array !
'
;
}
}
}
?>
以上代码其实就是申明了一个处理函数类,并且定义了一个可以给供 Flash 调用的函数 test() ,而我们运行 Flash 点击按钮 submit 的时候,Flash 客户端程序会去服务器端请求使用 test() 函数并返回结果。对照一下以上两个代码不难看出,其实有了 Amfphp 框架,我们很容易为 Flash 定义处理函数,并且完成与 Flash 的交互。
另外,我们还可以通过访问 http://localhost/fserver/browser/ 来测试函数的可用性,这里有一个小秘诀,如果要输入数组,你应该这样写:[val_1, val_2, val_3 ...] 哦,Enjoy It