记得前些天看到有人问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;
*****译者注*****
存储简单数据的方法到这基本上就介绍完了,是不是很简单?
为了方便大家理解,我做了一个简单的例子:
你可以在文本框中输入任何内容,然后点击储存,
以后任何时候你打开这个swf,文本框中总是上一次储存的内容。
我现在想到的对SharedObject最有意思的应用就是游戏存档!
只要将与游戏相关的数据,如时间,分数,等级,屏幕位置等相关数据存储
再在必要的时候提取出来,基本上就算是实现存档取档功能。
希望有兴趣的朋友试试。
另外,在使用SharedObject之前,别忘了把你的Flash Player的文件存储设置为无限制,如图:
|
|
否则,超过了Player文件存储的上限(默认好像10k),ShareObject将不起作用
存储复杂数据一般指得是存储自定义类的实例。这一部分因为时间关系(要复习考试)没有翻译,等有时间再来跟大家讨论。
·有关Flash ActionScript 3编程的总结 (0次浏览)
·有关AS3编程的一些总结 (0次浏览)
·Flash CS3 组件开发教程 (0次浏览)
·Flash教程:无AS制作—飘落的红叶 (0次浏览)
·Flash处理外部XML文档数据 (0次浏览)
·有关Flash ActionScript 3编程的总结 (0次浏览)
·有关AS3编程的一些总结 (0次浏览)
·Flash CS3 组件开发教程 (0次浏览)
·Flash教程:无AS制作—飘落的红叶 (0次浏览)
·flash手绘蝴蝶(只需六步完成) (0次浏览)
·Flash教程:无AS制作飘落的红叶 (0次浏览)
·FLASH 8实例教程:瀑布动画制作方法 (767次浏览)
·flash8打造瀑布动画效果教程 (686次浏览)
·用 FLASH 8 制作瀑布动画 (577次浏览)
·Flash打造碧海蓝天海鸥飞翔动画 (338次浏览)
·用Flash制作动态放大镜画面效果 (324次浏览)
·用FLASH遮罩效果做图片切换效果 (314次浏览)
·Flash8制作动态放大镜画面效果 (160次浏览)
·Flash8简单制作飞速旋转效果 (155次浏览)
·简单实用!Flash打造“时空穿梭”特效 (137次浏览)
·有关Flash ActionScript 3编程的总结 06-21
·有关AS3编程的一些总结 06-20
·Flash CS3 组件开发教程 06-19
·Flash教程:无AS制作—飘落的红叶 06-16
·flash手绘蝴蝶(只需六步完成) 06-13
·Flash教程:无AS制作飘落的红叶 06-13
·Flash打造碧海蓝天海鸥飞翔动画 05-31
·用Flash打造壮阔的碧海蓝天 05-29
·Flash制作过渡卷动效果精美图库特效 05-24
|
|||
| ·ACDSEE专题教程-下载使用 ·迅雷专题教程-下载使用 ·Windows XP频道 ·Windows Vista频道 ·Windows 2000频道 ·win2003频道 ·Freebsd频道 ·Oracle频道 |
·Linux频道 ·Windows频道 ·邮件服务器专题 ·协议大全 ·数据恢复指南教程 ·FreeBSD使用教程 ·Linux数据库宝典 ·Linux基础知识 |
||
| · 秘密:Vista隐蔽的动态屏保 · 腾讯开发新电子宠物--QQ熊 · 惠普否认2999元PC有价无货 |
· 驱逐Win系统“流氓”文件 · WinXP中获取未使用的IP地址 · 尝试format C:格式化硬盘? |
| · 在DOS下恢复回收站中的文件 · 拯救WinXP崩溃的救命稻草 · Linux系统中超级权限的应用 |
· 搜狗PK谷歌:谁能代言拼... · 昨日重现,一键GHOST轻松.. · 实现Web迅雷在空闲时杀毒 |
| · AVIFile函数制做AVI文件 · VC中链接动态链接库的方法 · 熊猫烧香核心源码(Delphi) |
· DateDiff函数祥解 · JavaScript去除空格的三种 · js效果 图片加载进度实时.. |
| · SQL Server数据库优化方案 · Oracle的初学者入门心得 · JSP连接Mysql数据库 |
· Photoshop为美女做艺术处理 · 用Freehand创建发光字特效 · 设计自己的个性QQ动态表情 |





