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

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

你可能感兴趣的:(Flex SharedObject 使用技巧-- 在Application之间传值)