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。
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相关推荐
- Windows 8 应用开发 - 本地数据存储
原文:Windows 8 应用开发 - 本地数据存储 在应用中通常会遇到用户主动或被动存储信息的情况,当应用关闭后这些数据仍然会存储在本地设备上,用户下次重新激活应用时会自动加载这些数据.下面将通过一 ...
- iOS APP之本地数据存储(译)
最近工作中完成了项目的用户信息本地存储,查阅了一些本地存储加密方法等相关资料.期间发现了一个来自印度理工学院(IIT)的信息安全工程师的个人博客,写了大量有关iOS Application secur ...
- android 储存方案,Android本地数据存储方案(一)
Android系列的博客主要是记录和总结自己在平时学习之中遇到的问题,方便日后用到时查看,同时也希望对读者有所帮助.不足之处,欢迎指正~ 在说到Android数据存储之前,先提一下数据持久化,所谓数据 ...
- iOS本地数据存储安全
iOS本地数据存储安全 移动APP通常会在设备本地存储一些数据,这可以为程序执行.更良好地性能或离线访问提供支持.由于移动设备使用地越来越广泛,设备失窃的风险也越来越大,因此不安全的本地数据存储已成为 ...
- Android本地数据存储: Reservoir
一:前言 今天做项目,准备使用本地存储,把一些数据存在本地磁盘上,比如用户名.密码这样的.其实大家都知道,这种情况最常用的就是SharedPreferences了,我也不例外,脑子里第一个想到的就是用 ...
- Unity 之 转微信小游戏本地数据存储方法分享
Unity 之 转微信小游戏本地数据存储 问题背景 微信小游戏读写本地文件 WebGL平台的一些限制 报错查看方法分享 问题背景 近期在将Unity转换为小游戏的时候发现在读写本地文件的时候,使用Ap ...
- 白鹭本地数据存储操作代码实例
白鹭引擎 版本:5.2.8 描述:白鹭本地数据存储操作代码实例 本地数据的增删改查函数 /*** 数据存储函数*/private save_key(key_name:string,key_value: ...
- Unity3D 数据转换 本地数据存储、Excel表格数据读取与多语言本地化
Unity3D 项目框架相关 数据转换 TDataConvertion XML本地数据存储 TGameSave Excel读表工具 TExcel 多语言本地化 TLocalization 范例工程: ...
- Android之本地数据存储(一):SharedPreferences
所有的应用程序都必然涉及数据的输入与输出.在Android系统中,主要有五种数据存储模式: 1 . Sharedferences:Sharedferences是一种轻型的数据存储方式,本质上是基于XM ...
最新文章
- 个人知识体系思维导图_高中数学知识点思维导图
- TalkingData:2014年移动打车应用行业报告
- 通过JDBC进行简单的增删改查(以MySQL为例)
- 进击的Objective-C--------Objective-C基础(-)
- rem,em,px的区别
- 7-323 逆波兰表达式 (10 分)
- MVC---张国亮总结心得第一季
- N81新手入门全攻略——N81常规设置问答篇
- python画e指数函数_python绘制指数函数
- 什么软件可以测试手长,手相测试扫一扫软件
- Win系统 - 苹果系统里的“提醒事项”可否同步到 Windows 系统中?
- postman批量调用接口操作步骤
- 计算机三级应该学什么条件,计算机三级报名条件
- 〖Python 数据库开发实战 - MySQL篇㉘〗- MySQL 日期函数
- 实现数组扁平化的几种方式
- ECharts:免费,开源,超炫的可视化作品
- 7 Win98 MS—DOS
- 关于区块链应用场景的思考
- Linux mkdir命令
- ts转换mp4 linux_佳佳AVI MP4格式转换器下载-佳佳AVI MP4格式转换器v6.5.5.0 官方版
热门文章
- jQuery_第五章_jQuery事件和动画
- 简述nodejs、npm及其模块在windows下的安装与配置
- Ubuntu18.04安装cudnn
- es日期format_elasticsearch存储日期格式字段
- vant组件实现上传图片裁剪_如何用 120 行代码,实现交互完整的拖拽上传组件?...
- steamvr unity 连接眼镜_150度FOV,自研显示方案,Kura公布全新AR眼镜Gallium
- java 报文长度计算_从TcpClient.GetStream()读取而不知道长度 - java
- 鸿蒙与微信小程序,鸿蒙远程交互应用 vs 微信小程序远程交互应用
- c语言表示哥德巴赫猜想,用C语言来验证哥德巴赫猜想(定义的是int型)
- 初三女生学计算机专业,江西中专初三毕业学计算机专业适宜女生吗