flex招式八:flex共享对象ShareObject

  flex的共享对象ShareObject是flex在不同的swf传递数据的一种方式~`,在本地,创建的文件可以在C:\Documents and Settings\{你的用户名}\Application Data\Macromedia\Flash Player\#SharedObjects找到,它是以sol为后辍的文件保存,打开可以看到里面的内容``所以在保存前重要数据得加密``
  对于本地共享对象存取方式如下:
  // ******* 保存一个对象 ******
  // getLocal方法的第二个参数是在#SharedObjects目录开始寻址的,而且必须是存在的目录~`
  var so:SharedObject = SharedObject.getLocal("mydata","/");
  var o:Object = new Object();
  o.name = "apple";
  so.data.obj = o;
  so.flush();
  //跳转 navigateToURL(new URLRequest("flexj.html"));
  // ****** 获取共享对象 ******
  var so: SharedObject = SharedObject.getLocal("mydata","/");
  var name:String = so.data.obj.name;
  Alert.show(name);
  开发人员已就可以在客户端存储数据了,就像cookies一样。ShareObject有两种格式:本地和远程。这篇文章只讨论 本地ShareObject.远程ShareObject一般和flash communication server一起使用。 很多情况下,ShareObject提供了除cookies外的另一种选择,这是许多开发者没有考虑过的。
  1、 存储简单数据 在ShareObject中存储简单数据是相当简单的工作,我们先用ShareObject存储一个用户自定义的对象,然后将讨论用ShareObject存储内建 类的实例的问题。一个用户自定义对象可以这样创建:
  myObj = new Object();
  //or
  myObj = {};
  在ShareObject中存储myObj是很简单的,首先你需要创建一个本地ShareObject的引用:
  myLSO = SharedObject.getLocal("foo");
  getLocal方法的第一个参数是ShareObject的名字,getLocal()方法也有第二个可选参数:一个字符串类型的路径。大多数情况下你用不到这个参数,除非你在多个swf文件中共用同一个ShareObject。
  现在为了在ShareObject中储存数据,你需要给ShareObject指定"数据特性"(data property)。现在创建一个ShareObject引用,以及你想存储的对象,最后存储这个对象到"数据特性"中。 例子:
  myLSO = SharedObject.getLocal("foo");
  myObj = {};
  myObj.fname = "Jessica";
  myObj.lname = "Smith";
  myLSO.data.myObj = myObj
  foo就是这个共享对象的标识,shareobject可以存贮很多的对象,用这个foo可以指定我们要的数据。 关于远程shareobject可以参见http://hacker47.javaeye.com/blog/208389 hacker已经将这个问题讲得很清楚了。
  1、什么是共享对象:
  SharedObject(共享对象)可以看作是小型的数据库,它用来存储任何Flash支持的数据类型,比如数字、字符串、数组和对象等等。
  SharedObject按存放位置可分为本地型(存在客户端)和远程型(存在服务器端)。本地型共享对象的扩展名为.sol。
  对于Windows98(me)用户来说,默认的存储路径是:Application Data\Macromedia\Flash Player\服务器域名路径\Flash电影文件名.swf;
  对于Windows2000(xp)用户来说,默认的存储路径是:Documents and Settings\[User]\Application Data\Macromedia\Flash Player\服务器域名路径\Flash电影文件名.swf。
  本地型共享对象只能将数据保存在默认路径下,而且扩展名只能是.sol。
  在网上有看到说该方法受文件大小的限制,最大为1K,但经过反复实验发现,该方法并不受文件大小限制。
  2、如何创建一个本地型共享对象:
  要创建一个SharedObject对象,可以使用SharedObject.getLocal()方法,语法如下:
  SharedObject.getLocal("objectName" [, pathname]): SharedObject
  下列例子创建了一个叫做sObj的本地型共享对象:
  private var sObj:SharedObject = SharedObject.getLocal("hello");
  这将在客户端创建一个叫做hello.sol的文件,sObj就是本地型共享对象。
  3、关于SharedObject类
  使用SharedObject类,你可以创建和删除共享对象。SharedObject类主要包含下列属性和方法:
  属性 描述
  data 描述了共享对象保存的属性集合的只读属性
  onStatus 共享对象的事件处理器
  方法 描述
  clear() 删除SharedObject中的所有数据,并且从磁盘中删除SharedObject的所有属性。
  flush() 立即向客户端写入SharedObject
  getLocal() 返回客户端域定义的本地共享对象的引用。如果不存在共享对象,这个方法将创建一个新的共享对象。
  getSize() 获得共享对象文件的大小。默认上线是100k,如果客户端允许,还可以更大。
  4、共享对象与Cookie:
  共享对象功能就像浏览器的cookie。你可以使用SharedObject类来在用户的本地磁盘上保存数据,并且在当前的会话或之后的会话中调用那些数据。
  程序祝你能访问它们自己的SharedObject数据,并且只能在他们欲行在相同的域的时候可以。
  这些数据不会被发送到服务器,并且不能被运行在其他域下的Flex曾需访问,但是可以来自同一域中的Flex程序访问。
  比较共享对象与Cookie
  Cookie和共享对象都非常简单。因为大多数web程序员都很熟悉cookie的工作原理,这有助于对比cookie和本地共享对象。
  Cookie遵循RFC 2109标准生成,并且拥有下列属性:
  它们可以过期,通常默认在会话结束时过期;
  它们可以被禁用;
  最多可以有300个Cookie,并且每个站点最多可以有20个cookie;
  每个Cookie通常被限制在4k大小;
  某些情况下,它们会被认为是安全隐患,因而在客户端被禁用;
  它们存储在由客户端浏览器指定的位置;
  它们通过HTTP协议从客户端传递到服务器。
  作为比照,共享对象有如下属性:
  默认情况下不会过期;
  默认情况下,它们被限定在每个100K大小;
  它们可以保存简单数据类型(例如String,Array和Date);
  它们被保存在由程序定义的位置(在用户的主目录下);
  它们永远不会从客户端传递到服务器。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值