2009年11月13日 星期五

Flash : loadVars, loadVariables ... cache 的問題

最近寫的 Flash 小遊戲為了要能夠讓使用者可以自行維護題庫或是設定,主要是利用 loadVariablesNum 來讀取文字檔 (*.txt) ,類似的函數還有 loadVars, loadVariables, loadMovie ......。這些函數都可以讓我們用來動態載入設定或是影片,使得程式可以有更高的擴充性及可用性。但是如果程式是放在 Web Server 上,會有一個困擾,Flash 似乎不會去檢查檔案的修改時間來決定是否重新載入,如果設定檔已經修改過,使用者在沒有重新啟動瀏覽器的情形下,即使按了瀏覽器的 Reload 再多次,依然不會去載入新的設定檔。這個問題其實 Adobe 官方網站有提供解決的範例:
它的主要原理是在要載入的路徑後面加上一個用亂數產內容的變數,這樣就可以讓載入指令中的 URL 看起來不一樣。

例如,假設原來的指令是:
loadVariablesNum("set.txt",0);

就改成:
loadVariablesNum("set.txt"+"?nocache="+random(65000),0);

但是,取亂數還是有可能會連續兩次一樣,為了避免這種情形發生,我們可以再加上時間,所以改成這樣:

now_date = new Date();
nocache = "?nocache="+now_date.getTime()+random(65000);
loadVariablesNum("set.txt"+nocache,0);
如此一來,就不會再發生設定檔改了半天,卻一點效果都沒有的情形。唉!電腦就是這樣,它不會轉彎,我們來轉。

沒有留言:

張貼留言

 
© 2009. Design by Pocket