iT邦幫忙

0

關於php傳值給flash

i7807 2010-08-09 11:20:0710555 瀏覽
  • 分享至 

  • xImage

我現在需要php跟資料庫做連結傳值給flash,還是有別的方法,最主要是要讓flash跟資料庫做連結,可以不用xml嗎?

看更多先前的討論...收起先前的討論...
wordsmith iT邦高手 1 級 ‧ 2010-08-09 13:45:45 檢舉
可以用URLLoader和URLRequest這兩個方法來達成。

假如有支php會回傳username的資料,叫get_username.php

loader = new URLLoader();
loader.load(new URLRequest('get_username.php'));
loader.addEventListener(Event.COMPLETE,dataGotHandler);

function dataGotHandler(e:Event)
{
  trace(e.target.data)
}



trace到的資料就是php回傳的username了

回傳的資料如果不多,用文字parsing的方式去處理,或者用json傳回字串,再利用adobe提供的json libaray去decode,也可以不需要用到xml。

話說回來,as3處理xml其實也算方便啦,原生就有支援E4X。
i7807 iT邦新手 5 級 ‧ 2010-08-09 14:24:07 檢舉
所以php用普通的變數寫法就好了嗎?還是需要用到其他特定函數
wordsmith iT邦高手 1 級 ‧ 2010-08-09 14:44:55 檢舉
如果只是一個簡單的字串,例如就只要回傳"i7807",應該只是echo回去,就會被塞到e.target.data裡面了。
i7807 iT邦新手 5 級 ‧ 2010-08-09 14:55:16 檢舉
所以要裡用echo??跟java applet的寫法差不多,還是只要echo就好?
echo "<param name=\"sampleURL\" ";	echo "   value=\"$sampleURL\">\n";

我有兩個變數要傳,要
echo $loginName;  echo $Member_coin
是這樣嗎?
i7807 iT邦新手 5 級 ‧ 2010-08-09 15:10:06 檢舉
然後我就不會了@@
i7807 iT邦新手 5 級 ‧ 2010-08-09 15:10:38 檢舉
我是用as3.0
wordsmith iT邦高手 1 級 ‧ 2010-08-09 16:27:06 檢舉
如果是兩個變數,我應該會直接echo $loginName.",".$Member_coin,傳回給as之後,再利用逗號把那個變數內容給parse出來。
i7807 iT邦新手 5 級 ‧ 2010-08-09 16:36:11 檢舉
parse這裡??我不太懂他是php還是flash抱歉!!我是新手
echo $loginName.",".$Member_coin這是一段?
itblog iT邦新手 1 級 ‧ 2010-08-09 18:19:07 檢舉
我貼一下比較完整的好了
Actionsctipt的部分,我用兩個動態文字欄位,實體名稱分別為loginName和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的部分

<?php
$loginName = "keroro";

$Member_coin = 100;

echo $loginName.",".$Member_coin;

?>
itblog iT邦新手 1 級 ‧ 2010-08-09 18:35:07 檢舉
loader.dataFormat = URLLoaderDataFormat.VARIABLES;  


這句不用,抱歉
i7807 iT邦新手 5 級 ‧ 2010-08-09 18:46:48 檢舉
Error: Error #2101: 傳遞給 URLVariables.decode() 的字串必須是包含成對名稱/值之 URL 編碼的查詢字串。
loader.load(new URLRequest('test.php'));
我只有改這個而已??
i7807 iT邦新手 5 級 ‧ 2010-08-09 18:54:07 檢舉
可以了@@謝謝
i7807 iT邦新手 5 級 ‧ 2010-08-09 19:06:10 檢舉
這樣不能選最佳答案@@有人要把它貼到答案去嗎?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

8
itblog
iT邦新手 1 級 ‧ 2010-08-09 22:32:36
最佳解答

假設有支php叫get_username.php,呼叫時會回傳loginName和member_coin的資料,內容如下:

&lt;pre class="c" name="code">&lt;?php
$loginName = "keroro";

$Member_coin = 100;

echo $loginName.",".$Member_coin;

?>

Actionsctipt的部分,則用兩個動態文字欄位,實體名稱分別為loginName和member_coin來接回傳的變數值

&lt;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。

我要發表回答

立即登入回答