| Flash MX – 新的闪烁世界(第十天)
炎热的夏天正在悄然地袭击着容易受伤的深圳,导致本魔中午外出觅食的时候竟然都睁不开眼睛……紧张之后新周一也没什么事情可做,这个时候不写点东西才叫浪费青春。
Flash MX中在服务器/客户的数据处理/存储控制上下了一些功夫。简单而方便的loadVars对象我们在第二天就看到了其芳踪,XML/XmlSocket对象还是老瓶装旧药,Cookie对象也不过是测试环境的牺牲品,倒是新的SharedObject对象和LocalConnection对象让我看到MX闪亮的万丝千屡一瞬间(头发丝的高光部)。
通常,我们在Flash 5会有几种方法来存储我们用过的数据:如果在无Server的状态,我们可能用到FScommand+exec+EXE或者FScommand+Save+XML,适用于单机游戏和存放“Cookie”;如果存在Server,那么需要Loadvar/XML
or XmlSocket Send连接服务器端程序写入服务器数据库保存,但在网络条件恶劣或者安全措施严谨的情况下,这样的方法可能造成重要数据的无法写入;而Flash
MX的SharedObject则可以减缓服务器存储速度并有效解决此类问题。
mySO=new SharedObject(); //make a new SharedObject
SharedObject对象看起来更像是Cookie对象/MMSave方法和FScommand的Save的结合产物。在存储用户临时数据时我们可能经常使用到它,例如:
//main 1
i=10
while(--i){
var saveme=random(4); //change text here
var tmpData=SharedObject.getLocal("testMod");
if (tmpData.data.data==undefined || tmpData.data.data!=saveme){
trace("new data saved"+eval(tmpData.data.data=saveme));
//display & save
tmpData.flush(); //refresh data
}
trace(tmpData.data.data) //display result
trace("-------------------------------")
}
这个例子清楚地说明SharedObject的临时数据存储功能。首先,随机产生0-3的随机数作为待存数据,然后通过SharedObject的getLocal方法读取硬盘中文件为testMod.sol中的数据,判断内容里面名称为data的子值是否和待存数据相同或者根本无数据,条件成立则刷新存储构造数据data的data值并显示结果(“new
data saved”)。
要点:
先覆盖原值,然后flush()一次(就好像其名——冲厕所)。
最后显示当前值,如果和原值相同,则不会显示new data saved,即没存入硬盘。(也没必要)(图1)

(图1,来个图,否则某些人会说不玩罗,程序好枯燥哦~……)
|