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。

AS3 游戏存档

我不知道大多数的Flash游戏是不是有本地存档,但是我的游戏确实碰到了
在这里向各位高手请教一下,AS3中如何读写本地文件,我知道Air中有flash.filesystem这个包
但是在 Flash Player 中(在浏览器中运行的 SWF 文件中)未公开这些属性和方法
有高手能给点思路吗?

在网页中的flash游戏,如果需要用到本地存储,有两种方式考虑:
1、Cookie相关的。平常网页相关的存储都可以使用,通过flash调用页面js实现。
2、SharedObject。这是flash自带的存储功能,默认大小为100k。

SharedObject对象的使用方法不详细介绍,类的方法属性可以参考:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/SharedObject.html
例子:

try {
    var so:SharedObject = SharedObject.getLocal("flash_cookie", "/");
    so.data["test"] = true;
    trace(so.data["test"]);
}catch (e:Error) { }

AS3.0编程 So本地数据存储(“超级cookies”)--AS3:Local SharedObject相关推荐

  1. Windows 8 应用开发 - 本地数据存储

    原文:Windows 8 应用开发 - 本地数据存储 在应用中通常会遇到用户主动或被动存储信息的情况,当应用关闭后这些数据仍然会存储在本地设备上,用户下次重新激活应用时会自动加载这些数据.下面将通过一 ...

  2. iOS APP之本地数据存储(译)

    最近工作中完成了项目的用户信息本地存储,查阅了一些本地存储加密方法等相关资料.期间发现了一个来自印度理工学院(IIT)的信息安全工程师的个人博客,写了大量有关iOS Application secur ...

  3. android 储存方案,Android本地数据存储方案(一)

    Android系列的博客主要是记录和总结自己在平时学习之中遇到的问题,方便日后用到时查看,同时也希望对读者有所帮助.不足之处,欢迎指正~ 在说到Android数据存储之前,先提一下数据持久化,所谓数据 ...

  4. iOS本地数据存储安全

    iOS本地数据存储安全 移动APP通常会在设备本地存储一些数据,这可以为程序执行.更良好地性能或离线访问提供支持.由于移动设备使用地越来越广泛,设备失窃的风险也越来越大,因此不安全的本地数据存储已成为 ...

  5. Android本地数据存储: Reservoir

    一:前言 今天做项目,准备使用本地存储,把一些数据存在本地磁盘上,比如用户名.密码这样的.其实大家都知道,这种情况最常用的就是SharedPreferences了,我也不例外,脑子里第一个想到的就是用 ...

  6. Unity 之 转微信小游戏本地数据存储方法分享

    Unity 之 转微信小游戏本地数据存储 问题背景 微信小游戏读写本地文件 WebGL平台的一些限制 报错查看方法分享 问题背景 近期在将Unity转换为小游戏的时候发现在读写本地文件的时候,使用Ap ...

  7. 白鹭本地数据存储操作代码实例

    白鹭引擎 版本:5.2.8 描述:白鹭本地数据存储操作代码实例 本地数据的增删改查函数 /*** 数据存储函数*/private save_key(key_name:string,key_value: ...

  8. Unity3D 数据转换 本地数据存储、Excel表格数据读取与多语言本地化

    Unity3D 项目框架相关 数据转换 TDataConvertion XML本地数据存储 TGameSave Excel读表工具 TExcel 多语言本地化 TLocalization 范例工程: ...

  9. Android之本地数据存储(一):SharedPreferences

    所有的应用程序都必然涉及数据的输入与输出.在Android系统中,主要有五种数据存储模式: 1 . Sharedferences:Sharedferences是一种轻型的数据存储方式,本质上是基于XM ...

最新文章

  1. 个人知识体系思维导图_高中数学知识点思维导图
  2. TalkingData:2014年移动打车应用行业报告
  3. 通过JDBC进行简单的增删改查(以MySQL为例)
  4. 进击的Objective-C--------Objective-C基础(-)
  5. rem,em,px的区别
  6. 7-323 逆波兰表达式 (10 分)
  7. MVC---张国亮总结心得第一季
  8. N81新手入门全攻略——N81常规设置问答篇
  9. python画e指数函数_python绘制指数函数
  10. 什么软件可以测试手长,手相测试扫一扫软件
  11. Win系统 - 苹果系统里的“提醒事项”可否同步到 Windows 系统中?
  12. postman批量调用接口操作步骤
  13. 计算机三级应该学什么条件,计算机三级报名条件
  14. 〖Python 数据库开发实战 - MySQL篇㉘〗- MySQL 日期函数
  15. 实现数组扁平化的几种方式
  16. ECharts:免费,开源,超炫的可视化作品
  17. 7 Win98 MS—DOS
  18. 关于区块链应用场景的思考
  19. Linux mkdir命令
  20. ts转换mp4 linux_佳佳AVI MP4格式转换器下载-佳佳AVI MP4格式转换器v6.5.5.0 官方版

热门文章

  1. jQuery_第五章_jQuery事件和动画
  2. 简述nodejs、npm及其模块在windows下的安装与配置
  3. Ubuntu18.04安装cudnn
  4. es日期format_elasticsearch存储日期格式字段
  5. vant组件实现上传图片裁剪_如何用 120 行代码,实现交互完整的拖拽上传组件?...
  6. steamvr unity 连接眼镜_150度FOV,自研显示方案,Kura公布全新AR眼镜Gallium
  7. java 报文长度计算_从TcpClient.GetStream()读取而不知道长度 - java
  8. 鸿蒙与微信小程序,鸿蒙远程交互应用 vs 微信小程序远程交互应用
  9. c语言表示哥德巴赫猜想,用C语言来验证哥德巴赫猜想(定义的是int型)
  10. 初三女生学计算机专业,江西中专初三毕业学计算机专业适宜女生吗