Flash本地共享对象(SharedObject)

//定义一个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);
包 类 public class SharedObject 继承 SharedObject 语言版本 : ActionScript 3.0 Player 版本 : Flash Player 9 SharedObject 类用于在用户计算机或服务器上读取和存储有限的数据量。 使用共享对象,可在永久贮存在本地计算机或远程服务器上的多个客户端 SWF 文件和对象之间实现实时数据共享。 本地共享对象类似于浏览器 Cookie,远程共享对象类似于实时数据传输设备。 若要使用远程共享对象,则需要一个服务器(如 Adobe Flex 或 Adobe 的 Macromedia Flash Media Server 2)。
NetStream 类中的一些属性和方法主要用于服务器(如 Flash Media Server 2 或 Flex)。 它们可能包含更多的服务器端功能。 有关其它文档,请参阅 Flash Media Server documentation中的 NetStream 类。

下文介绍了共享对象的三种常见用法:

维护本地永久性。 这是使用共享对象的最简单用途,并且无需使用服务器。 例如,可以调用 SharedObject.getLocal() 在 Flash Player 应用程序中创建共享对象,如带记忆功能的计算器。 用户关闭计算器时,Flash Player 将在用户计算机的共享对象中保存最后一个值。 计算器下一次运行时,将包含先前所拥有的值。 或者,在计算器应用程序关闭之前,如果将共享对象属性设置为 null,那么,当应用程序在下一次运行时,将不带任何先前值。
维护本地永久性的另一示例就是跟踪用户首选项或复杂网站的其它数据,如用户在新闻网站上所阅读文章的记录。 跟踪此信息将允许您以不同方式分别显示已经阅读的文章和新的未读文章。 在用户计算机上存储此信息可减小服务器负载。

在服务器上存储和共享数据。 可以联机或脱机工作的电话簿应用程序就是一个示例。 当 Internet 连接可用时,应用程序将从服务器上的远程共享对象检索最新信息。 当没有连接可用时,应用程序将使用在保存在本地共享对象中的最新数据。
实时共享数据。 共享对象可以实现多个客户端的实时数据共享。 例如,您可以打开一个存储有实时数据的远程共享对象(如连接到聊天室的用户的列表),连接到该对象的所有客户端均能看到此共享对象。 当用户进入或离开聊天室时,对象即被更新,连接到该对象的所有客户端均能看到聊天室用户的更新列表。
若要创建本地共享对象,请使用以下语法:

var so:SharedObject = SharedObject.getLocal("userHighScore");
so.data.highScore = new Number(1234567890);
so.flush();
在示例中,共享对象被显式刷新,或被写入磁盘。 在应用程序关闭时,将自动刷新共享对象;但此处显示刷新是为了说明将数据写入磁盘的步骤。

本地磁盘空间注意事项:本地共享对象将非常有用,但它们也有一些限制,这些限制很重要,您在设计应用程序时应予 以考虑。 有时可能不允许 SWF 文件写入本地共享对象,有时可能在您不知情的情况下删除在本地共享对象中存储的数据。 Flash Player 用户可以管理对单个域或所有域可用的磁盘空间。 当用户减少可用磁盘空间时,一些本地共享对象可能会被删除。 Flash Player 用户还具有隐私控制能力,它们可防止第三方域(当前浏览器地址栏中域之外的域)读取或写入本地共享对象。

注意:在本地计算机上(而不是从远程服务器)存储和运行的 SWF 文件始终可以将第三方共享对象写入磁盘,即便用户不允许由第三方域将共享对象写入磁盘。 有关第三方共享对象的详细信息,请参阅 Global Storage Settings panel中有关第三方内容的论述。

Adobe 建议您检查与磁盘空间数量和用户隐私控制相关的故障。 在调用 getLocal() 和 flush() 时执行这些检查:

SharedObject.getLocal() -- 调用此方法失败时(如用户禁用了第三方共享对象,并且您的 SWF 文件的域与浏览器地址栏中的域不匹配),Flash Player 将引发异常。
SharedObject.flush() -- 调用此方法失败时,Flash Player 将引发异常。 调用成功时,将返回 SharedObjectFlushStatus.FLUSHED。 需要额外存储空间时,将返回 SharedObjectFlushStatus.PENDING。 Flash Player 提示用户增加本地保存信息的存储空间。 随后,对 netStatus 事件进行调度,同时信息对象将指示刷新是否成功。
如果您的 SWF 文件尝试创建或修改本地共享对象,请确保 SWF 文件的宽度至少为 215 像素,高度至少为 138 像素,这是用于显示提示用户增加其本地共享对象存储限制的对话框的最小尺寸。 如果您的 SWF 文件小于这些尺寸,且需要增加存储限制,则 SharedObject.flush() 失败,返回 SharedObjectFlushedStatus.PENDING,并调度 netStatus 事件。

猜你喜欢

转载自ljy-888.iteye.com/blog/1604443