您的位置: 首页 > 技术文档 > 多媒体制作 > ShareObject 实现flash数据存储
ShareObject 实现Replay功能 回到列表 Flash中的电影艺术之镜头技巧
 ShareObject 实现flash数据存储

作者:jinni 时间: 2003-08-07 文档类型:翻译 来自:蓝色理想

第 1 页 ShareObject 实现flash数据存储
第 2 页 应用例子:模拟游戏存盘

记得前些天看到有人问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"),你才能得到你想要的结果。
****************

你还可以存储更多内建类型:数组,布尔值,日期,数字,对象,XML,undefined,null

下面是一个将日期实例存储在SharedObject中的例子:
myLSO = SharedObject.getLocal("DateStorage");

myDate = new Date();
myLSO.data.myDate = myDate;

*****译者注*****
存储简单数据的方法到这基本上就介绍完了,是不是很简单?
为了方便大家理解,我做了一个简单的例子:



下载3.fla

你可以在文本框中输入任何内容,然后点击储存,
以后任何时候你打开这个swf,文本框中总是上一次储存的内容。

我现在想到的对SharedObject最有意思的应用就是游戏存档
只要将与游戏相关的数据,如时间,分数,等级,屏幕位置等相关数据存储
再在必要的时候提取出来,基本上就算是实现存档取档功能。
希望有兴趣的朋友试试。
另外,在使用SharedObject之前,别忘了把你的Flash Player的文件存储设置为无限制,如图:


否则,超过了Player文件存储的上限(默认好像10k),ShareObject将不起作用

存储复杂数据一般指得是存储自定义类的实例。这一部分因为时间关系(要复习考试)没有翻译,等有时间再来跟大家讨论。

出处:蓝色理想
责任编辑:handmade

上一页 下一页 应用例子:模拟游戏存盘

◎进入论坛Flash专栏版块参加讨论

相关文章 更多相关链接
Flash 酷站猎手
中文ID3乱码问题MX解决方案
用AS2解决中文ID3的乱码
Flash常用效果-移动模糊效果
Flash MX 2005 制作环境预览
作者文章 更多作者文章
Flash Lite 与 J2ME 分析比较
给ActionScript初学者的建议
Flash MX 2004 支持的HTML标签
为AS2.0添砖加瓦-编写类扩展
MX2004--AS2.0 新特性实例教程
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
悟道web标准:前端性能优化
纯中文域名".中国"今日提交申请
世界之窗3.0皮肤设计大赛结果公布
使用jQuery制作滑动动画效果的层
如何设计网页横幅
Plump 图标设计
Subrat Nayak图标设计
百度知道推出文档分享服务
CSS Sprites(CSS雪碧):要还是不要?
UIRSS三周年纪念日推出V2公测版
栏目最新 栏目最新列表
Firefox的Jetpack扩展案例分析
阿里妈妈UED谈CSS Sprites技术
Photoshop中设计绿色时尚Web网站
操作Dom节点实现间歇滚动新闻
浏览器15年历史回顾
如何创建Firefox的Jetpack扩展
全透视:CSS Z-index 属性
用PS 3D工具绘制甜麦圈包装袋
悟道Web标准:让W3C标准兼容终端
悟道WEB标准:统一思想,遵循标准
>> 分页 首页 前页 后页 尾页 页次:1/21个记录/页 转到 页 共2个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

本文现有 4 条评论 评分:- llllllllllllllllllll + 评分人数: 1 ,平均分: 4.00


wst1020 Publish at 2008-4-27 13:49:06
请问制作3.flashy游戏,如何控制鼠标?
Harley35 Publish at 2007-6-20 10:32:13 评分4
3.fla打不开,请问制作3.fla的过程,按钮需要写什么命令?
218.85.95.71 Publish at 2004-4-16 9:44:12
请问Flash Player的文件存储设置可以用程序控制吗?
61.144.146.50 Publish at 2004-1-2 1:30:12
--”getLocal()方法也有第二个可选参数:一个字符串类型的路径。大多数情况下你用不到这个参数,除非你在多个swf文件中共用同一个ShareObject。“

我试过了,好象没办法在多个swf文件中共用同一个ShareObject
您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
《Web标准设计》
闪魂-FlashCS4完美入门与案例精粹
Waver_h's华丽世界
Illustrator CS3质感绘画表现技法
《Flash短片轻松学》
《用户体验要素》
《JavaScript语言精粹》
作品集 更多内容

贝克洛门窗 瑞士朵佳浓首页 飞机稿 珠江钢琴等几个黑色首 SAMESBIM GOBLET 浪漫宣言女装 仙谷