快速业务通道

ShareObject 实现flash数据存储

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-10

记得前些天看到有人问Flash怎么在本地存储信息的问题
想起在 http://www.ultrashock.com?看到的一篇关于SharedObject的文章
挑了一部分翻译了一下,也做了一些补注。
第一次做翻译工作,弄得不好各位多见谅。 什么是本地ShareObject? 通过flash 6 player,开发人员已就可以在客户端存储数据了,就像cookies一样。ShareObject有两种格式:本地和远程。这篇文章只讨论 本地ShareObject.远程ShareObject一般和flash communication server一起使用。一个本地ShareObject只需要flash 6 player,仅此而已。很多情况下,ShareObject提供了除cookies外的另一种选择,这是许多开发者没有考虑过的。 存储简单数据 在ShareObject中存储简单数据是相当简单的工作,我们先用ShareObject存储一个用户自定义的对象,然后将讨论用ShareObject存储内建类的实例的问题。一个用户自定义对象可以这样创建:
myObj = new Object(); //or myObj = {};

在ShareObject中存储myObj是很简单的,首先你需要创建一个本地ShareObject的引用:
myLSO = SharedObject.getLocal("foo");
getLocal方法的第一个参数是ShareObject的名字,getLocal()方法也有第二个可选参数:一个字符串类型的路径。大多数情况下你用不到这个参数,除非你在多个swf文件中共用同一个ShareObject。现在为了在ShareObject中储存数据,你需要给ShareObject指定“数据特性”(data property)。现在创建一个ShareObject引用,以及你想存储的对象,最后存储这个对象到“数据特性”中。
例子:
myLSO = SharedObject.getLocal("foo");
myObj = {};
myObj.fname = "Jessica";
myObj.lname = "Smith";
myLSO.data.myObj = myObj *****译者注*****
myLocalSharedObject.data
描述:
只读属性,用来存储被存储到“数据特性”中的对象的属性,这些属性可以共享/存储,每一个属性可以是各种基础数据类型(数组,数字布尔值等)对象
**************** 现在myObj已经存储在SharedObject中了,今后你可以通过对SharedObject数据属性的存取来实现对myObj的存取,下面是一个例子,这个例子检测是否数据已经被存储到SharedObject中了,如果没有,它将数据存储进去,如果已经存在,则在输出窗口输出。当你将这些代码放到一个空的电影的第一祯后,你可以运行它一次,然后在运行一次,第二次运行你可以看到你存储的数据被输出。 *****译者注*****
一定要先保存动画,否则你的动画只是在windows临时文件夹中运行,不能存储数据。
****************
myLSO = SharedObject.getLocal("foo");

if(myLSO.data.myObj == undefined){
?? trace("Storing Data, run me again");
?? myObj = {};
?? myObj.fname = "Jessica";
?? myObj.lname = "Smith";
?? myLSO.data.myObj = myObj;
}else{
?? trace("Retrieving Data");?
?? var firstname = myLSO.data.myObj.fname;
?? var lastname = myLSO.data.myObj.lname;
?? trace("First Name: "+firstname);
?? trace("Last Name: "+lastname);
}
*****译者注*****
运行一次以上后,你可以将程序改为
?? myLSO = SharedObject.getLocal("foo");
?? trace("Retrieving Data");
?? var firstname = myLSO.data.myObj.fname;
?? var lastname = myLSO.data.myObj.lname;
?? trace("First Name: "+firstname);
?? trace("Last Name: "+lastname);
你会发现无论你重复运行多少次,甚至关闭flash后重新进入,仍然能够得到firstname和lastname的值。
另外你应该可以理解getLocal()方法的参数的作用了,它用来表示你所存储的数据的载体名称,是必不可少的。
例如本例中的数据都存储在名为foo的SharedObject中,只有getLocal("foo"),你才能

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号