您的位置:首页 > 移动开发 > Objective-C

Flex SharedObject 使用技巧-- 在Application之间传值

2011-11-15 11:31 99 查看
FLEX在application之间传值--SharedObject

通常,我们在做页面传值的时候,都是用TitleWindow弹出框进行传值,下面我给大家介绍一下,两个Application页面的跳转和传值,希望对正在学习Flex的朋友能有所帮助

情况一:在不同页面进行跳转:

传值方:

var so:SharedObject = SharedObject.getLocal("validate","/");

//validate是临时文件

so.data.validateResult = true;

so.data.number = 1;

//1是要传得值

so.flush();

var request:URLRequest = new URLRequest();

request.url = "bb.html";

//bb.html是要跳转的页

navigateToURL(request);

接受方:

var so:SharedObject = SharedObject.getLocal("validate","/");

var valid:Boolean = so.data.validateResult;

if( valid != true ){

so.clear();

}

else{

var number:String = so.data.number.toString();

this.text.text=number;

so.clear();

}

情况二:在本页面进行跳转:

传值方:

var so:SharedObject = SharedObject.getLocal("validate","/");

so.data.validateResult = true;

so.data.number = 1;

//1是要传得值

so.flush();

var request:URLRequest = new URLRequest("bb.html");

navigateToURL(request,"_self");

接受方:

var so:SharedObject = SharedObject.getLocal("validate","/");

var valid:Boolean = so.data.validateResult;

if( valid != true ){

so.clear();

}

else{

var number:String = so.data.number.toString();

this.text.text=number;

so.clear();

}

Flex Shared Object是一个类似于Cookies的东西,同来存储一些数据到用户本机。但它与Cookies又有些不同。

第一,Cookies过一段时间会过期,而它不会,除非你执行清除命令。

第二,存储的数据大小不能超过100KB,超过了,FlashPlayer会提示用户是否允许该存储操作。

第三,存储数据的位置和程序本身有关。

第四,它不会像Cookies那样在客户端和服务器端之间传递。

SharedObject类有以下几个方法:

1.clear(), 清除共享数据和文件。

2.flush(),立即写入共享文件到客户端。

3.getLocal(),获得共享数据文件,如果为空系统会自动新建一个共享文件到客户端。

4.getSize(),获得共享数据文件的大小,单位是bytes。

有两个属性:

1.data,代表着共享数据的数据集合。

2.onStatus,当共享数据发出警告、错误或其他信息时的事件。

主要看下面的这个方法:

SharedObject.getLocal(objectName [, localPath])

其中objectName是该共享对象的名字,localPath即共享对象所在路径。

// 创建一个本地保存数据的对象

var cookie:Object = SharedObject.getLocal("cookie");

方法会在默认的路径下生成一个cookie.sol文件。文件的默认大小不能超过100k,当然可以通过鼠标右击flash窗口,选择设置来管理或者禁用您的本地共享对象。可以让每个flash独立使用自己的SharedObject,当然也可以做一个全域的SharedObject让所有的swf使用,只要给localPath 赋值 "/"。

在win2k和 win xp中,默认路径为C:\Documents and Settings\username\Application Data\Macromedia\Flash Player\#SharedObjects (username为机器的用户名)

每个对象都会有一个只读属性data,用来存储被存储到“数据特性”中的对象的属性,这些属性可以共享/存储,每一个属性可以是各种基础数据类型(数组,数字布尔值等)对象。现在cookie已经存储在SharedObject中了,以后你可以通过对SharedObject数据属性的存取来实现对cookie的存取。例如:

cookie.data.name = "张三";

cookie.data.password = "123456";

cookie.data.rememberPassword = true;

共享对象的写入会在应用程序退出时自动执行,也可以通过cookie.flush()强制写入。

创建共享文件

public var mySO:SharedObject;

mySO = SharedObject.getLocal("preferences");

创建一个自定义路径的共享文件。

mySO = SharedObject.getLocal("preferences","/");

如果你希望让多个Flex程序共享此文件,可以用到此功能。

写共享数据到本地

public var currentUserName:String = "Reiner";

public var itemsArray:Array = new Array(101,346,483);

public var currentUserIsAdmin:Boolean = true;

mySO.data.userName = currentUserName;

mySO.data.itemNumbers = itemsArray;

mySO.data.adminPrivileges = currentUserIsAdmin;

mySO.flush();

注意:共享数据只支持简单数据类型,例如:int,uint,string,array等。

要让支持自己定义的VO,可以用以下的办法:

so.data.user = new SysUserVO();

so.data.user.userName = this.username.text;

so.data.user.password = this.password.text;

取值:

var curUser:Object = so.data.user;

读出

trace(mySO.data.userName,mySO.data.itemNumbers,mySO.data.adminPrivileges)

清除

mySO.clear();

此程序的数据实际上是保存在本机的,所以不需要使用数据库,也只有你的机器才能够看到。

SharedObject对象从Flash MX开始支持,它类似于Cookie,可以在本机保存一些信息,但只限于某个目录

原文链接:

http://blog.csdn.net/tgh7934418715/archive/2010/10/11/5933482.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐