2008年11月22日
【練習】如何在Flash中實作Save/Load(本地端)
有些遊戲可以提供即時存檔,有的網站會記錄使用者資訊,在下次拜訪時主動和你打招呼,倒底是怎麼辦到的呢?最簡單的就是使用Flash的SharedObject 將資料放在"flash cookie"裡,如果應用裡有如下的需求,就很適合這個方法:
方便的另一面就是會有幾個潛在缺點:
- 儲存使用者資訊,下次進入時可以再次讀取出來。
- 儲存量很小,小於100K(預設值)。
- 不想使用資料庫、寫檔或搭配其它網頁程式。
- 簡易、快速且安全性要求不高。
方便的另一面就是會有幾個潛在缺點:
- 使用者在它台電腦上網時,資料不會跟著轉移。
- 不是所有電腦都適用,使用者可以設定將可用容量調小或關閉(預設100KB)。
- 儲存內容有可能會曝露給該電腦的使用者,甚至被修改。
SharedObject的使用方式如下:
var so:SharedObject = SharedObject.getLocal("test");
// test在此算是一個集合, 底下還可以儲存多個變數
if(so.size==0) // size為所佔空間, 0代表Shared object不存在
{
trace("created...");
so.data.now = new Date().time; // 存入目前時間於 "now"
/* 注意:資料都是儲存在.data底下
要增加Object物件的子變數不用另外宣告, 直接給值就會建立 */
}
trace(so.data.now); // 讀取變數 "now"
trace("used: "+ so.size +" bytes"); // size單位是byte
so.flush(); // 寫回動作, 很重要!
flash cookie所存的值使用權限是site by site,也就是不同的網站可存取的空間是分開的,就算是看起來相同的flash檔也一樣,所以不用擔心資料被其它flash應用覆寫,或者被惡意網站盜用。
[範例原始檔下載]
引用URL
http://cgi.blog.roodo.com/trackback/7672497
