我現在需要php跟資料庫做連結傳值給flash,還是有別的方法,最主要是要讓flash跟資料庫做連結,可以不用xml嗎?
loader = new URLLoader(); loader.load(new URLRequest('get_username.php')); loader.addEventListener(Event.COMPLETE,dataGotHandler); function dataGotHandler(e:Event) { trace(e.target.data) }
echo "<param name=\"sampleURL\" "; echo " value=\"$sampleURL\">\n";
echo $loginName; echo $Member_coin是這樣嗎?
import flash.net.URLLoader; import flash.net.URLRequest; var loader:URLLoader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.VARIABLES; loader.load(new URLRequest('http://localhost:8080/get_username.php')); loader.addEventListener(Event.COMPLETE,dataGotHandler); function dataGotHandler(e:Event) { var returnData:String = e.target.data; trace(returnData); var result:Array = returnData.split(","); loginName.text = result[0]; member_coin.text = result[1]; }
<?php $loginName = "keroro"; $Member_coin = 100; echo $loginName.",".$Member_coin; ?>
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
假設有支php叫get_username.php,呼叫時會回傳loginName和member_coin的資料,內容如下:
<pre class="c" name="code"><?php
$loginName = "keroro";
$Member_coin = 100;
echo $loginName.",".$Member_coin;
?>
Actionsctipt的部分,則用兩個動態文字欄位,實體名稱分別為loginName和member_coin來接回傳的變數值
<pre class="c" name="code">import flash.net.URLLoader;
import flash.net.URLRequest;
var loader:URLLoader = new URLLoader();
//呼叫get_username.php
loader.load(new URLRequest('http://localhost:8080/get_username.php'));
//註冊呼叫完成後的事件處理器
loader.addEventListener(Event.COMPLETE,dataGotHandler);
//處理回傳資料的事件處理器
function dataGotHandler(e:Event)
{
//接到 "keroro,100"的回傳字串
var returnData:String = e.target.data;
//將字串分割為陣列
var result:Array = returnData.split(",");
//將keroro指定到loginName這個textField實體
loginName.text = result[0];
//將100指定到member_coin這個textField實體
member_coin.text = result[1];
}
回傳的資料如果不多,可以直接用文字parsing的方式去處理(如上面的例子),或者用傳回json結構的字串,再利用Adobe提供的json libaray去解碼,也不需要用到XML。
話說回來,AS3處理XML也算方便,因為原生就有支援E4X。