网站上的网游存储原理,谁来告诉我!
c:\ documents and settings \ administrator(或者你的用户名)\ application data \ macromedia \ flash player \ # shared objects \ 2s 6 jn9l 7(这个文件夹的名字是系统随机生成的,你的和我的肯定不一样)!
在这个目录中,你会看到很多以网站命名的目录,然后根据你访问过的小游戏网站就可以找到了!例如,我刚才在这个小游戏站玩游戏,会有一个名为baiduflash.com的文件夹,而。我玩过的游戏的sol文件里面就是数据!(本文为原创,转载请注明:来自zhidao.baidu.com,我爱小怪兽)
2.flash数据可以通过ShareObject存储(本文译自/金妮)。
请先了解什么是本地ShareObject。
使用flash 6 player,开发人员已经可以在客户端存储数据,就像cookies一样。ShareObject有两种格式:本地和远程。本文只讨论本地ShareObject。远程ShareObject通常与flash communication server一起使用。一个本地ShareObject只需要flash 6播放器,仅此而已。在许多情况下,ShareObject提供了cookies的替代方案,这是许多开发人员没有考虑到的。
存储简单数据
在ShareObject中存储简单数据是一项相当简单的工作。我们将首先用ShareObject存储一个用户定义的对象,然后我们将讨论用ShareObject存储内置类的实例的问题。用户定义的对象可以按如下方式创建:
myObj = new Object();//或者myObj = { };
在ShareObject中存储myObj非常简单。首先,您需要创建对本地ShareObject的引用:
my lso = shared object . get local(" foo ");
getLocal方法的第一个参数是ShareObject的名称,getLocal()方法还有第二个可选参数:字符串类型的路径。大多数情况下,除非在多个swf文件中使用同一个ShareObject,否则不需要此参数。现在,为了在ShareObject中存储数据,您需要为ShareObject指定“数据属性”。现在创建一个ShareObject引用和想要存储的对象,最后将这个对象存储在“数据特征”中。
示例:
my lso = shared object . get local(" foo ");myObj = { };myObj.fname = " JessicamyObj.lname = " SmithmyLSO.data.myObj = myObj
* * * * *译者注* * * *
myLocalSharedObject.data
描述:
只读属性,用于存储存储在数据属性中的对象的属性。这些属性可以共享/存储,每个属性可以是各种基本数据类型(数组、数字布尔值等)的对象。).
现在myObj已经存储在SharedObject中。以后可以通过访问SharedObject的data属性来访问myObj。这里有一个例子。此示例检测数据是否已存储在SharedObject中。如果没有,它将数据存储在其中。如果它已经存在,则在输出窗口中输出。当你把这些代码放在一个空电影的第一帧,你可以运行一次,然后再运行一次,再运行第二次,你就可以看到你存储的数据输出了。
* * * * *译者注* * * *
请务必先保存动画,否则您的动画将只能在windows临时文件夹中运行,并且无法存储数据。
****************
my lso = shared object . get local(" foo ");
if(my lso . data . myobj = = undefined){
trace("存储数据,再次运行我");
myObj = { };
myObj.fname = " Jessica
myObj.lname = " Smith
my lso . data . myObj = myObj;
}否则{
trace("检索数据");
var first name = my lso . data . myobj . fname;
var last name = my lso . data . myobj . lname;
trace("名字:"+名字);
trace("姓氏:"+姓氏);
}
* * * * *译者注* * * *
运行多次后,您可以将程序更改为
my lso = shared object . get local(" foo ");
trace("检索数据");
var first name = my lso . data . myobj . fname;
var last name = my lso . data . myobj . lname;
trace("名字:"+名字);
trace("姓氏:"+姓氏);
你会发现无论重复运行多少次,甚至关闭flash重新输入,还是能得到firstname和lastname的值。
此外,您应该能够理解getLocal()方法的参数的功能,这对于表示您存储的数据的运营商名称是必不可少的。
比如这个例子中的数据存储在一个名为foo的SharedObject中,只有get local(“foo”)才能得到想要的结果。
****************
还可以存储更多的内置类型:数组、布尔值、日期、数字、对象、XML、未定义、null。
以下是在SharedObject中存储日期实例的示例:
my lso = shared object . get local(" date storage ");
myDate = new Date();
my lso . data . myDate = myDate;
注意:
SharedObject最有趣的应用是游戏存档!
只要对游戏相关的数据,如时间、分数、等级、屏幕位置等相关数据进行存储,并在必要时进行提取,就基本实现了存档和检索文件的功能。
另外,在使用SharedObject之前,不要忘记将你的Flash播放器的文件存储设置为无限制,否则如果超过播放器的文件存储限制(默认为10k),ShareObject将无法工作!