[转载]AS3.0编程 So本地数据存储

原文:http://ccap168.cn/news/201041105455.htm

Flash影片运行过程中,大多数的数据都存储于影片本身,一旦影片被关闭,这些数据也就从内存中被清除掉,下次运行时,数据将从头开始。若想存储数据或者让客户端的多个影片共享同一组数据,就要想办法把数据存储在Flash播放器之外。
在ActionScript 3.0中,SharedObject类实现了在客户端机器中持久性存储数据。有两种类型的共享对象:本地和远程。本节主要介绍在本地储存数据。
创建ShareObject对象

Flash的ShareObject对象一般简称为SO,类似于Web浏览器中的cookies。它们被一些开发者称为“超级cookies”,因为SO可以存储大量数据,且存储和读取的都是原生的ActionScript类型数据。
ShareObject对象默认的空间大小100KB,用户可以通过FlashPlayer'sSettingsManager控制的使用空间大小,来严格限制被使用的空间。存储在本地计算机的SO文件是一种二进制文件,扩展名为.sol。不同的SWF影片可以通过flash.net.SharedObject类进行读写.sol文件。
创建的.sol文件被放置在Flash播放器对应的应用程序数据目录,以Windows为例,目录为:C:\Documents and Settings\Administrator\Application Data\Macromedia\Flash Player\#SharedObjects,在此主目录下使用随机字符命名目录,记录数据。
向SO上写入数据

要实现添加数据到SO上,只需给SO对象的data属性添加属性值。共享对象SO有个内建的属性data,data属性类型为object,因而可以添加任何信息上去。如下面的示例代码所示。
//存储username值给so共享对象
so.data.username= "浪子啸天";
注意:既不能直接向SO共享对象赋值,也不能直接向SO共享对象的data属性赋值,这样的结果都是错误的。
如下面的两行写入数据的方法都是错误的,错误代码如下所示。
so.username="浪子啸天";
so.data="浪子啸天";
读取SO数据
要实现在客户端读取SO数据,原理很简单。因为这些持久性数据都保存在共享对象的data属性里,只需要访问Data对象的相关属性就Ok了。
下面的示例实现读取SO中储存的数据,代码如下所示。
var so:SharedObject=SharedObject.getLocal("test")
//将数据写入so
so.data.username="浪子啸天"
so.data.sex="男"
//写入数据
so.flush()
//读取so中的username
var user=so.data.username
trace(user)//输出:浪子啸天
trace(so.data.sex)//输出:男
删除保存的SO共享数据

要实现删除共享对象中的某个属性值或者删除整个共享对象,需要使用两种不同的方法:用delete删除共享对象的data属性中的值;使用clear()方法清除整个共享对象。
下面的示例使用delete关键字删除SO共享对象的data对象中的sex属性,代码如下所示。
var so:SharedObject=SharedObject.getLocal("test")
//将数据写入so
so.data.username="浪子啸天"
so.data.sex="男"
//写入数据
so.flush()
//删除so中的sex属性
delete so.data.sex
trace(so.data.sex)//输出:undefined,说明删除成功
trace(so.data.username)//输出:浪子啸天

你可能感兴趣的:(职场,数据存储,休闲)