·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3中创建ShareObject对象

时间:2016-01-24 20:50酷播
AS3.0编程 So本地数据存储(“超级cookies”)--AS3:Local SharedObject

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)//输出:浪子啸天

=================================================================
在 AS3 里的Local SharedObject用法跟 AS2 是一样的。
SO存储在计算机的一个文件里面,跟Cookie很相似。路径是C:\Documents and Settings\用户名\Application Data\Macromedia\Flash Player\#SharedObjects\

基本用法:   


//定义一个SO
    var mySO:SharedObject;
    //获取本地的一个SO
    mySO = SharedObject.getLocal("beniSO");
    //在SO里面存储数据
    mySO.data.name = "Beni";
    mySO.data.sex = "sex";
    //获取SO里面的数据
    trace ("name is: " + mySO.data.name);
    trace ("sex is: " + mySO.data.sex);


注意:本地Flash存储设置不能为“无”,而且容量未满。

Local SharedObject使用起来有不少限制,所以都是用来记录一些不大重要的信息。例如登陆时的用户名之类的。
现在不少Flash游戏有存档,绝大不分也是用这个SO。

=========================================
////////应用第二次打开时跳到skip处
第2桢(第1桢是loading)
var son:SharedObject=SharedObject.getLocal("adk_kids_park");
if (son.data.loadedss=="sk") {
    gotoAndStop("skipok");
}
//////
skip处桢(第1桢是loading)
son.data.loadedss="sk";

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器