主题:  FlashMX保存本地数据两法

rtzaa

职务:普通成员
等级:1
金币:21.0
发贴:1002
注册:2005/5/21 13:42:04
#12005/4/20 10:02:31
来源/伍冬 出处:中国电脑教育报
文/Pcom.cn 2003-12-31



谈到计算机操作,往往离不了数据操作,最基本的数据操作就是读取和保存数据。Flash程序很多时候也会用到数据操作,比如说载入外部文件就是读取数据。然而Flash保存数据的能力是很有限的。Flash 5时我们还可以用Fscommond来本地保存外部文本文件,到了Flash MX时代,出于对安全因素的考虑,Micromedia取消了这个功能。那是不是我们就无法用Flash MX保存数据了呢?回答是否定的,这里我就系统给大家介绍用Flash MX本地保存外部数据的两种方法。

方法一:使用MMSave函数
对象说明:这是Flash MX专门用来存盘的函数,出于对安全因素的考虑,Micromedia隐藏了它。这个函数还有另一种用法: MMSave(loadedMCName, saveMCName),其作用就是将载入的动画另存到一个新文件中,这个功能可以用来将压缩格式的“.swf ”转化成未压缩格式的“.swf ”,大家不妨试一试。对于Windows 98/XP/Me用户来说,默认的存储路径是:Application DataMacromediaFlash MXConfiguration;对于Windows 2000(XP)用户来说,默认的存储路径是:Documents and Settings[User]Application DataMacromediaFlash MXConfiguration。

用法:MMSavetextString txtFileName

参数:textString  字符串,用来记录要保存的数据内容

xtFileName 要保存的文本文件名

示例:在场景中建立一个动态文本(变量名为name)并设置一个按钮(实例名为send_btn)。然后在第一帧加入下面的代码:

send_btn.onRelease = function() {

MMSave(name, "../../../../../../data.txt");

};

按“Ctrl+Enter”测试一下,看是否能将输入的用户名保存在C盘的data.txt中。

点评:这个函数只能用在编辑器的调试播放中,在IE或者其它Flash播放器中就不能用了。
方法二:使用SharedObject对象
对象说明:SharedObject(共享对象)可以看做是小型的数据库,我们可以用它来存储任何Flash支持的数据类型,比如数字、字符串、数组和对象等等。SharedObject按存放位置可分为本地型(存在客户端)和远程型(存在服务器端)。本地型共享对象的扩展名为.sol。对于Windows 98/Me用户来说,默认的存储路径是:Application DataMacromediaFlash Player服务器域名路径Flash电影文件名.swf;对于Windows 2000/XP用户来说,默认的存储路径是:Documents and Settings[User]Application DataMacromedia

Flash Player服务器域名路径Flash电影文件名.swf。

用法:下面是关于本地型共享对象的部分最主要的方法、属性的介绍。

参数:getLocal(name) 方法 “name”参数共享对象名,返回共享对象的参照

flush 方法 立即将数据写入共享对象

data 属性 存取共享对象数据的通道

你只需要掌握以上这些知识就可以用共享对象来存取外部数据了。

示例:按方法一设置场景,然后输入下面的代码。

var user_so = sharedobject.getlocal("user"); // 建立共享对象的参照

send_btn.onRelease = function() {

with (user_so) {

data.name = name; //用data属性和flush方法保存用户输入的用户名   

flush();

}

};

点评:
本地型共享对象只能将数据保存在默认路径下,而且扩展名只能是.sol。这种方法的作用与设置cookies的作用类似。