由於費用上的考量,因此選用 amfphp 繼續朝 Flash Remoting 的下個階段前進,為什麼要學 Flash Remoting,一開始學習的動機就是為了想要讀取資料庫,所以在把資料庫弄懂了之後,才會繼續學 Flash Remoting 的其他應用。這個部份要學的是,使用 Flash UI components 的 Datagrid (資料網格元件) 讀取 mySQL 資料庫。

以下以 Raie's Blog 的文章分類作 Flash Remoting DataGrid Demo,先看結果吧。
(PS. 受到 2006/6 Blog 改版影響, 本範例已無法讀到正確數據,請見諒)

[Flash] /attach/1/1111481200.swf

1. 在 flashservices\services\ 之下新增一個檔案夾 labs 以存放測試用檔案,並在裡面再建立一個檔案夾 myRecordset 作為本專案專用檔案夾。

2. myRecordset.php
<? PHP
class myRecordSet
{
function myRecordSet()
{
// 設定資料庫 //主機位置、使用者、密碼
$link = mysql_connect("localhost","myDBUser","myDBPassword");
mysql_select_db ("MyDBName",$link); //資料庫名稱

$this->methodTable = array(
"getRecords" => array(
"description" => "Returns some records",
"access" => "remote",
)
);
}

// 讀取資料
function getRecords()
{
return mysql_query(sprintf("select myColumn1、myColumn2 from myTable order by myColumn1 asc")); //欄位1,欄位2 // 資料表 // 以欄位1排序
}
}
?>

3. 開啟 Flash MX 2004 Professional,選[視窗] > [其他面板] > [內建元件庫] > [Remoting],並將 Remoting.fla 元件庫中的 RemotingClasses 和 RemotingDebugClasses 拖曳到場景中並刪除(這樣此檔案元件庫即可擁有 Remoting 兩個元件)

4. 拖曳 [組件] > [UI Components] > [DataGrid] 和 [Button] 各一個到場景中。並各命名為 Datagrid1 和 Button1;DataGrid 元件可調整大小,而 Button1 可在 [組件檢測器] > [參數] > [label] 輸入按鈕名稱。

5. 在影格上加入以下 ActionScript:
// remoting 相關
import mx.remoting.Service;
import mx.remoting.PendingCall;
import mx.remoting.RecordSet;
import mx.remoting.debug.NetDebug;
import mx.rpc.RelayResponder;
import mx.rpc.ResultEvent;
import mx.rpc.FaultEvent;
import mx.events.*;

// 開始偵錯
NetDebug.initialize();

// 設定 gateway 和 Responder
var gatewayUrl:String = "http://localhost/flashservices/gateway.php"
Responder = new RelayResponder(this、"handleResult"、"handleError");
_service = new Service(gatewayUrl、null、"labs.myRecordSet.myRecordSet"、null、Responder);

// 傳回資料,並將資料置入資料網格
var pc:PendingCall = _service.getRecords(["myColumn1"、"myColumn2"]); //欄位1,欄位2

datagrid1.columnNames = ["myColumn1"、"myColumn2"]; //欄位1,欄位2
datagrid1.getColumnAt(1).width = 100;
datagrid1.getColumnAt(0).headerText = "欄位1";
datagrid1.getColumnAt(1).headerText = "欄位2";
datagrid1.sortableColumns = false;

// 無誤時傳回正確結果
function handleResult(re:ResultEvent):Void{
var mydata:RecordSet = RecordSet(re.result);
datagrid1.dataProvider = mydata;
}

// 有誤時傳回錯誤報告
function handleError(fe:FaultEvent)
{
trace('Error!');
}

// 重新整理按鈕的設定
button1.clickHandler = function(){
datagrid1.removeAll();
var pc:PendingCall = _service.getRecords(["myColumn1"、"myColumn2"]); //欄位1,欄位2
}

6. 將檔案存檔為 Datagrid.fla
7. 開啟 [視窗] > [其他面板] > [NetConnection Debugger] 以準備進行網路連線偵錯。
8. 按 Ctrl + Enter 測試影片,若正確無誤 NetConnection Debugger 將顯示類似以下資訊:
就這樣,讀取 mySQL 的 Flash Remoting Demo 完成了!
2005/09/13 15:42 2005/09/13 15:42
2005/09/13 15:42 

Trackback Address :: http://blog.raienet.com/trackback/77


[◀ PREV][1]... [339][340][341][342][343][344][345][346][347]... [410][NEXT ▶]