FLEX在application之间传值-SharedObject

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,可以在本机保存一些信息,但只限于某个目录

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值