作者aquarianboy (我是沒牌的營養師!)
看板Flash
標題[心得] AMFPHP簡單介紹
時間Sun Aug 24 23:31:42 2008
可能今天因為場地的關係,沒能讓大家看清楚今天的Demo
我用文字補充一下:
跟Server在交換資料,比較常見的是一般的文字訊息或是XML
像我自己在趕時間的時候,我會隨便echo一個字出來知會flash說server程式已經做完了
不趕時間且資料量較多的時候,則會乖乖的用XML
不過,最近開始我比較常用的是AMF跟JSON這兩個方法
其實都還滿方便的,各有其優缺點
以下先簡單的說明一下AMF這玩意 :)
AMF:Action Message Format
細節可參考:
http://en.wikipedia.org/wiki/Action_Message_Format
不多說細節,就來個簡單的實作吧 :)
1. 下載AMF gateway
找個自己順手的語言吧
AMFPHP:這是PHP的
http://www.amfphp.org/
(不久之後,Zend Framework也會支援AMF)
PyAMF:這是Python的(我上個月開始迷上它了,努力學習中)
http://pyamf.org/
AMF.NET:這是.NET的
http://amfnet.openmymind.net/
光看名字大概就能猜到它的後端是用什麼做的
其它還有for Java或其它的,有興趣的可以繼續google翻翻看
2. 安裝AMF gateway(以AMFPHP為例)
其它只要把下載下來的程式碼整包解開,放在Web server底下一個自己找得到的路徑就行了
我是放在
http://127.0.0.1/test/amfphp/ 底下
它有提供一個很棒的Service Browser:
http://127.0.0.1/test/amfphp/browser
這是個用Flex做的介面,可以清楚列出目前在AMF gateway上的服務
3. 在AMF gateway上新增一個服務
我做了一個簡單的php類別檔,存檔為callme.php
並放在AMF gateway的services資料夾裡面
在這裡,php不像java或as一樣硬性規定類別名稱一定要跟檔名一樣...
至少php5還沒有,不過建立這習慣也不錯
<?php
class callme
{
function callmeplease($text)
{
return $text;
}
}
上面,我做了一個callme的類別,然後裡面放了一個callmeplease的方法
這個方法會接收一個參數,執行完成之後,會把傳入的參數return回來
這裡只是簡單直接return而已,更複雜的資料庫存取程式也可以寫在這裡....
接下來看一下剛剛那個Service Browser,會發現一個新的服務在的左手邊的列表裡
3. 新增一個Fla(這裡以AS3.0為例)
import flash.net.*;
var test:NetConnection = new NetConnection();
// 新增一個NetConnection物件
test.connect('
http://127.0.0.1/test/amfphp/gateway.php');
// 連上AMF gateway
// 這裡每家AMF gateway的實作方法應該都有差別,細節請記得看該實作說明
var returnResult:Responder = new Responder(ok, ng);
// 準備一個Responder物件來接收事件,用法及參數請參考F1說明
function ok(res:Object):void {
trace(res);
}
function ng(res:Object):void {
trace(res);
}
//以上,我做了ok跟ng兩個簡單小function,分別是trace出它們接收到的物件
test.call('callme.callmeplease', returnResult, 'hi, flash');
// 這裡是最重要的動作,就是直接用call這個方法
// "呼叫"在gateway上面的callme這個服務裡的callmeplease這個方法
// 第二個參數是接收反應的responder,第三個參數是給callmeplease的參數
以上,callme.callmeplease會把"hi, flash"傳給AMF gateway
然後gateway回傳"hi, flash"回來給flash
順利的話,Ctrl + Enter執行,就會在output視窗看到輸出的東西了
就這樣,你的Flash已經可以跟各家有支援AMF的gateway"對談"了
上面提到的原始檔在這裡可以拿得到(其實沒幾行字,就一個php跟fla)
http://code.eddie.com.tw/downloads/flash/AMF.rar
還是看不懂嗎? 沒關係
這裡有個很棒的影音教學,看完跟著作一遍就知道大概是怎麼運作的了
http://www.gotoandlearn.com/player.php?id=78
希望對大家有幫助 :)
--
誠徵
PHP網站工程師,熟
MVC架構佳
http://blog.eddie.com.tw/
全職、兼職可,意者請敲 :)
http://www.eddie.com.tw/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.139.9
推 dreamboxer:推...有空來試玩AMF+Flex~終於不用拼XML了~ 一_一y(耶) 08/25 00:03
推 didila:as3.0 拼xml還無所謂 算是不錯用 2.0就有點給他囧 -_- 08/25 20:20