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