星期五, 10月 09, 2009

AS2/AS3:Flash讀取外部資料到動態文字欄位

如果我們想在Flash中顯示目前觀看頁次(Page View)的數字訊息,可以透過伺服器將數字動態存取於某個檔案中,也許是純文字檔或ASP/PHP檔,再讓Flash去讀這個檔案來達到動態更新文字的效果!

在AS2中,我們將使用"LoadVars"的方法,讀取"counts.txt"這個外部純文字檔,並將其內容更新至實體名稱為"countNumbers"的動態欄位上;其中,"counts.txt"的文字內容很簡單,什麼都沒有就只有數字而已,內容如下:
23000000
接下來填入底下的Actionscript:
var lv:LoadVars = new LoadVars();
lv.onData = function(theText:Number) {
countNumbers.text = "累計人次:"+theText+"人";
}
lv.load("counts.txt");
結果將會使實體名稱為"countNumbers"的這個動態欄位顯示出底下的文字:
累計人次:23000000人
Flash-Creations.com的Reading a Text File and Using it in Flash有更多完整的敘述。
至於AS3,則是採用"URLLoader"的作法:
var myTextLoader:URLLoader = new URLLoader();
myTextLoader.addEventListener(Event.COMPLETE, onLoaded);
function onLoaded(e:Event):void {
countNumbers.text = "累計人次:"+e.target.data+"人";
}
myTextLoader.load(new URLRequest("counts.txt"));

5 則留言:

Unknown 提到...

不好意思,想請問一下如果要讀取php的檔案,AS3的程式要怎麼寫呢?
我有試過寫成
var myTextLoader:URLLoader = new URLLoader();
myTextLoader.addEventListener(Event.COMPLETE, onLoaded);
function onLoaded(e:Event):void {
myText.text = myTextLoader.data ;
}
myTextLoader.load(new URLRequest("http://localhost/PHPtest2/test.php"));
但是都讀不到php檔案的東西,只會出現html的東西。
這個我主要是想要讀取php的session值
試了好多FLASH就是讀不到php傳來的值
請幫幫我解答 感謝感謝妳

perr 提到...

這個方法雖然不會刻意區隔不同的檔案格式,但也沒辦法讀取太複雜的東西;也許你先測試.TXT文字檔可用後,再改成.PHP來試試。

Unknown 提到...

我有先用.TXT的文字檔測試過,的確是可以顯示資料,但換成PHP檔就沒辦法了。
所以是這個方法沒辦法讀取太複雜的.php檔嗎?
那還有什麼方法可以讓flash讀取php網頁所傳的變數值?

Evadne Wu 提到...

hi 捲毛,

這個問題比較複雜,要分作 XHR(XMLHttpRequest)跟 PHP 檔案本身的寫法來抓蟲。如果直接用瀏覽器打開目標 php 檔案的路徑,有沒有辦法顯示內容呢?另,方便把原始碼寫出來嗎?

如果方便的話,使用 jQuery $.load 配合 XHTML / CSS 來作,直接透過瀏覽器來讀取也是個可行的方案。當然,源頭要先捉出來 ; ) 。

perr 提到...

Hi, 捲毛

雖然我沒在寫PHP,但我猜你PHP的內容不像純文字檔一樣單純,所以Flash會找不到你要它找的東西;如果你可以列出PHP程式原始碼的話,可以幫你的人會多一些…

Evadne講的jQuery作法,可能是另一種方式,不過…要看你的專案規劃是要用什麼方式。

底下這個連結「PHP Session Variables + ActionScript 3」,也許會對你有幫助:
http://www.flash-db.com/Board/index.php?topic=18591.0

加油!