`
其实不坏
  • 浏览: 53337 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

关于flex的cookies---sharedobject

    博客分类:
  • Flex
阅读更多
最近有一个需求是关于要获取用户的mac地址,搜索了一通发现,比较普遍的方法就是用ie+调用ActiveX控件,但是他有弊端就是不能跨平台和要用户点击授权才能正常使用。
查看资料html中记录cookies也是一种可行的方法,所以就开始google看flex下有没有对应的类似cookies这样的东西 ---sharedobject
1.介绍
Flash的本地共享对象是在用户机器上实现持久化存储的数据集合。Flash可以从程序中控制这些数据集合,向其中存入或者从中读取大量的信息数据。SharedObject按存放位置可分为本地型(存在客户端)和远程型(存在服务器端)用法有差别,本文中只说存到客户端这种情况,远程型用到的可自己去查看资料
文件的默认大小不能超过100k,当然可以通过鼠标右击flash窗口,选择设置来管理或者禁用您的本地共享对象。可以让每个flash独立使用自己的SharedObject,当然也可以做一个全域的SharedObject让所有的swf使用,只要给localPath 赋值 "/"。
2.存储位置
以 Windows为例,目录为
C:\Documents and Settings\[ username ] \\Application Data\\Macromedia\\Flash
Player\\#SharedObjects\\ [ random character directory name ] , 在Mac OS X 上, 目录为
/Users/[ username ] /Library/Preferences/Macromedia/Flash Player/#SharedObject/ [ random
character directory name ]。随机字符目录命名是为了安全考虑
3.常用方法
SharedObject提供了下面的操作本地对象的方法:
SharedObject.clear() 删除本地共享对象;
SharedObject.flush() 立即把共享对象数据写入本地文件;
SharedObject.getLocal() 创建或连接本地共享对象;
SharedObject.getSize() 取得本地共享对象的指定大小数据。
4.添加属性
共享对象(Shared objects)有个内建的属性data,data属性类型为object,因此可以添加任何信息
5.例子
// 存储username值给example共享对象
example.data.username = "Darron";
可以直接存储ActionScript原生数据类 型:
但需要注意的是,不能存储可视化对象(例如 MovieClips,Sprite,Buttons,TextFields)
6.flush方法用法
flush( )方法有个可选的参数用于指定最小的硬盘空间,单位为字节,默认为0,指用最小的空间
正好存储本地共享对象。
当flush( )方法触发时,它试图把数据写到客户端上,调用结果有三种:
如果用户拒绝存储或Flash播放器因某种原因导致存储失败,该方法会抛出一个 Error。
如果本地存储空间不够导致数据不能保存,该方法返回SharedObjectFlushStatus.FLUSHED。
如果 用户没有分配足够的空间,该方法返回SharedObjectFlushStatus.PENDING。
三种情况中,当flush( )方法返回SharedObjectFlushStatus.PENDING常量时,用户可以选择授权或
拒绝保存数据,当用户做出选择 后,netStatus事件被激活,需要定义一个事件处理函数,当事
件处理函数被触发时,传递进一个类型为 flash.events.NetStatusEvent的事件,检查info.code 属性
值判断用户是同意 (SharedObject.Flush.Success)还是拒绝(SharedObject.Flush.Failed)
这里有个例子调用 flush( )保存数据,处理可能返回的结果:
6-1:例子
var example:SharedObject = SharedObject.getLocal( "example" );
example.data.someData = "a value";
try {
var flushResult:String = example.flush( );
if ( flushResult == SharedObjectFlushStatus.PENDING ) {
example.addEventListener( NetStatusEvent.NET_STATUS, onStatus );
} else if ( flushResult == SharedObjectFlushStatus.FLUSHED ) {
}
} catch ( e:Error ) {
Security.showSettings( SecurityPanel.LOCAL_STORAGE );.
}

function onStatus( event:NetStatusEvent ):void {
if ( event.info.code == "SharedObject.Flush.Success" ) {
} else if ( event.info.code == "SharedObject.Flush.Failed" ) {
}
example.removeEventListener( NetStatusEvent.NET_STATUS, onStatus );
};

6-2:例子
如果确切知道存储数据的大小,可直接给flush( )传参数:
// Request 500 KB of space for the shared object.
var flashResult:String = example.flush( 500 * 1024 );
7:读取客户端数据
在客户端读取这些内容很简单,这些持久性数据都保存在共享对 象的data属性里,因此像下面
的语句这样读就可以了:
// Read the value of exampleProperty from the shared object,
// example, and display it in the Output window.
trace( example.data.exampleProperty );
通过读写数据,我们可以判定用户是不是头 一次访问swf文件:
// Create a shared object and store some data in it
var example:SharedObject = SharedObject.getLocal( "example" );
if ( example.data.previouslyViewed ) {
// The user has already viewed the .swf file before, perhaps
// we skip an introductory help screen here.
} else {
// This is the first time the user is viewing the .swf file
// because previouslyViewed has not yet been set to true.
// Set previouslyViewed to true so that the next time this
// code is run we know the user has been here before.
example.data.previouslyViewed = true;
example.flush( );
}
8:删除对象
正确的方法是使用delete命令,如:
delete example.data.someVariable;
clear( )方法删除整个共享对象,实际上就是删除硬盘中的.sol文件,看下面的代码:
var example:SharedObject = SharedObject.getLocal( "example" );
example.data.someData = "a value";
// Displays: a value
trace( example.data.someData );
// Remove the shared object from the disk
example.clear( );
// Displays: undefined
trace( example.data.someData );
需要注意的地方是清除数据后, 共享对象的引用仍然是有效的,这是还是可以重新添加数据进
行保存。
上面几点基本上说了大部分内容,这边有个很详细的说明
地址:http://www.cnblogs.com/bmate/archive/2011/06/20/2084916.html
转自:http://www.cnblogs.com/bmate/archive/2011/06/20/2084916.html
thanks
分享到:
评论

相关推荐

    flex-messaging-core-4.7.3.jar

    flex-messaging-core-4.7.3.jar 最新版,下载了好长时间才下载下来,亲测可用!

    Flex SVN--1.5.5版本

    Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本

    flex-messaging-core.jar

    在flex-messaging-core.jar中,包含了一些关键组件和接口,例如: 1. **MessageBroker**: 这是Flex消息传递系统的中心,它管理消息的路由,调度和处理。MessageBroker实例化并配置了各种服务,如HTTP、HTTPS、RTMP...

    matlab开发-Flex0201DCorrelatorInterface

    在MATLAB开发环境中,"Flex0201DCorrelatorInterface"是一个专门设计用于与Flex02-01D硬件相关器交互的图形用户界面(GUI)。这个接口允许用户通过MATLAB直接控制和访问Windows驱动程序,从而实现对硬件设备的高级...

    flex-messaging系列jar包

    1. **flex-messaging-core.jar**:这是Flex Messaging框架的基础库,提供了核心的基础设施和服务。它包含AMF(Action Message Format)编解码器,用于高效地序列化和反序列化数据,以及基本的消息传递机制。AMF是一...

    Flex blazeds-spring

    Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring

    flex布局-flex-layout-master.zip

    - `flex`:是`flex-grow`, `flex-shrink`和`flex-basis`的简写形式。 - `align-self`:允许单个Flex项独立设置其在交叉轴上的对齐方式,覆盖容器的`align-items`属性。 5. **Flex容器属性**:用于控制整个Flex...

    flex-object-handles.zip_flex

    在Flex开发中,"flex-object-handles.zip_flex"这个压缩包可能包含了关于如何操作和交互Flex中的对象,特别是涉及到对象的移动、编译、放大和缩小功能的代码示例或教程。Flex是一种基于ActionScript和MXML的开源框架...

    spring-flex-1.5.0.M2-dist.zip

    这个名为“spring-flex-1.5.0.M2-dist.zip”的压缩包,包含了Spring Flex 1.5.0.M2版本的所有必要组件,使得开发者能够快速地开发和部署基于Flex的客户端应用。 在Spring Flex 1.5.0.M2中,核心组件`spring-flex-...

    flex-messaging-4.7.3最新版本的jar

    Flex Messaging是Adobe Flex框架的一部分,它提供了一个强大的实时通信平台,允许客户端(通常是Flex应用程序)与服务器进行双向数据交换。4.7.3版本是这个组件的一个更新,它可能包含了性能提升、错误修复以及新的...

    Forex-Flex-EA-V4.91_flexEA_海龟MT4_ea_mt4_ea源码_

    《深入解析Forex-Flex-EA-V4.91与海龟交易策略在MT4平台的应用》 在金融交易领域,自动交易系统(Expert Advisor,简称EA)的应用日益广泛,尤其是外汇市场(Forex)。本文将围绕“Forex-Flex-EA-V4.91”这一特定的...

    flex-iframe-1.4.6

    尽管Google Code已不再接受新的项目,但许多有价值的项目,如flex-iframe-1.4.6,仍然可以在其存档中找到。 在Flex框架中,开发者通常使用ActionScript来创建富互联网应用程序(RIA)。然而,有时需要在Flex应用...

    flex-2.6.4.tar.gz

    这个"flex-2.6.4.tar.gz"文件是Flex 2.6.4版本的源代码压缩包,遵循GNU General Public License (GPL)发布。在Linux和类Unix系统中,这种.tar.gz格式常用于存储和分发软件源代码,因为它可以高效地压缩大量文件。 ...

    flex-messaging-core

    flex-messaging-core jar包

    flex------组件-----数据可视化

    在这个“flex------组件-----数据可视化”主题中,我们将探讨Flex如何帮助开发者创建交互式的数据图表和可视化效果。 Flex框架提供了一套强大的组件库,其中包括用于数据可视化的类和库。这些组件使得开发人员能够...

    Sample-Flex4-TabBar

    《Flex4 TabBar组件的深度探索与应用实例》 在Adobe Flex 4中,TabBar是一种常见的用户界面组件,用于创建具有多个选项卡的应用界面,它允许用户在不同的视图或内容之间进行切换。TabBar组件是Spark组件库的一部分...

    flex-messaging-proxy.jar

    flex-messaging-proxy.jarflex-messaging-proxy.jarflex-messaging-proxy.jarflex-messaging-proxy.jar

    flex-messaging-common

    flex-messaging-common

    flex-messaging-common.jar

    flex-messaging-common.jar

    S2Flex2-1.1.0

    《S2Flex2-1.1.0:Seasar2框架与Flex交互的深度解析》 在现代Web应用开发中,交互性和用户体验是至关重要的因素。S2Flex2-1.1.0是一个专为Flash播放器设计的软件库,它使得开发者能够利用Adobe Flex这一强大的...

Global site tag (gtag.js) - Google Analytics