那是不是我們就無法用Flash MX保存數(shù)據(jù)了呢?回答是否定的,這里我就系統(tǒng)給大家介紹用Flash MX本地保存外部數(shù)據(jù)的三種方法。
方法一:使用MMsave函數(shù)
說明:這是FlashMX專門用來專門用來存盤的函數(shù),出于對安全因素的考慮,Micromedia隱藏了它。這個函數(shù)還有另一種用法: MMSave(loadedMCName, saveMCName),其作用就是將載入的動畫另存到一個新文件中,這個功能可以用來將壓縮格式的swf轉(zhuǎn)化成未壓縮格式的swf,大家不防試一試。對于Windows98(me)用戶來說,默認(rèn)的存儲路徑是:Application Data\Macromedia\Flash MX\Configuration;對于Windows2000(xp)用戶來說,默認(rèn)的存儲路徑是:Documents and Settings\[User]\Application Data\Macromedia\Flash MX\Configuration。
用法:MMSave(textString, txtFileName)
參數(shù):textString 字符串,用來記錄要保存的數(shù)據(jù)內(nèi)容
txtFileName 要保存的文本文件名
示例:在場景中建立一個動態(tài)文本(變量名為name)并設(shè)置一個按鈕(實例名為send_btn)。然后在第一幀加入下面的代碼。
send_btn.onRelease = function() { MMSave(name, "../../../../../../data.txt"); }; |
按“Ctrl+Enter”測試一下,看是否能將輸入的用戶名保存在C盤的data.txt中。
點評:這個函數(shù)只能用在編輯器的調(diào)試播放下,在IE或者播放器中就不能用了。
方法二:使用SharedObject對象
對象說明:SharedObject(共享對象)可以看作是小型的數(shù)據(jù)庫,我們可以用它來存儲任何Flash支持的數(shù)據(jù)類型,比如數(shù)字、字符串、數(shù)組和對象等等。SharedObject按存放位置可分為本地型(存在客戶端)和遠程型(存在服務(wù)器端)。本地型共享對象的擴展名為.sol。對于Windows98(me)用戶來說,默認(rèn)的存儲路徑是:Application Data\Macromedia\Flash Player\服務(wù)器域名路徑\Flash電影文件名.swf;對于Windows2000(xp)用戶來說,默認(rèn)的存儲路徑是:Documents and Settings\[User]\Application Data\Macromedia\Flash Player\服務(wù)器域名路徑\Flash電影文件名.swf。
用法:下面是關(guān)于本地型共享對象的部分最主要的方法、屬性的介紹。
1)getLocal(name) 方法 “name”參數(shù)共享對象名,返回共享對象的參照
2)flush 方法 立即將數(shù)據(jù)寫入共享對象
3)data 屬性 存取共享對象數(shù)據(jù)的通道
你只需要掌握以上這些知識就可以用共享對象來存取外部數(shù)據(jù)了。
示例:按方法一設(shè)置場景,然后輸入下面的代碼。
var user_so = sharedobject.getlocal("user"); // 建立共享對象的參照 send_btn.onRelease = function() { with (user_so) { data.name = name; //用data屬性和flush方法保存用戶輸入的用戶名 flush(); } }; |
動作說明:在這里我們首先一個,然后。
點評:本地型共享對象只能將數(shù)據(jù)保存在默認(rèn)路徑下,而且擴展名只能是.sol。這種方法的作用與設(shè)置cookies的作用類似。
方法三:結(jié)合JavaScript
還是在Flash 5時,ActionScript就可以與JavaScript相互通信了。那又該怎樣使用JavaScript本地保存Flash MX的數(shù)據(jù)呢?首先我們得用fscommond命令將Flash MX獲得的數(shù)據(jù)傳遞到JavaScript中。
步驟1:按方法一設(shè)置場景,然后在按鈕上加入下面代碼。
on (release) { fscommand("send_var", name); //fscommand參數(shù)為name變量 } |
步驟2:以Flash5的格式發(fā)布Flash電影和html文件,然后打開html文件,在與之間加入如下代碼:
<script language=JavaScript> </script> <script LANGUAGE=JavaScript> </script> |
你不必知道這些JavaScript和VbScript語句的具體含義,只要明白我們已經(jīng)將name變量的值傳遞給了args就行了。接下來我們還得將args的值寫入文本文件,最簡單的辦法就是使用FileSystemObject(文件系統(tǒng)對象)。添加如上紅色部分的代碼。關(guān)于FileSystemObject的用法,請參考<<JScript 語言參考 >>。
步驟3:運行html文件,輸入一個用戶名,點擊按鈕,用戶名就保存在C盤的testfile.txt中了。
嚴(yán)格來說, 這應(yīng)該算是FlashMX借用Flash 5語句來實現(xiàn)本地保存數(shù)據(jù)的方法。
至于選擇哪種方法,視具體情況而定。如果你是開發(fā)游戲,適宜用第一、二種方法;如果你不使用FlashMX的新增動作角本,可以試一試最后一種方法。