加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex shareObject对象详解

发布时间:2020-12-15 05:06:10 所属栏目:百科 来源:网络整理
导读:ShareObject,顾名思义共享对象,而通常意义上的共享,从B/S结构上来讲,无非是客户端(浏览器端)的共享和服务器端的共享了,不错,ShareObject刚好份演了这两种角色。而且ShareObject也是按此进行了两种分类,一类是LSO——Local Share Object(本地共享对象)其

ShareObject,顾名思义共享对象,而通常意义上的共享,从B/S结构上来讲,无非是客户端(浏览器端)的共享和服务器端的共享了,不错,ShareObject刚好份演了这两种角色。而且ShareObject也是按此进行了两种分类,一类是LSO——Local Share Object(本地共享对象)其实类似于cookie,而另一种RSO——Remote Share Object(远程共享对象) 我感觉比较类似于JSP中的Application对象,但好象比Application更强大。

Share object一般用来保存前来访问的用户的个人信息到用户的机器上。比如用户登陆过后保存他的名字,下次访问时自动显示,或者保存用户的个性化设置等等。每个网站对应100K的默认大小,如果尝试写入超过100K的数据到客户端硬盘,flash player会有提示。

下面就本地和远程来分别举例:



第一种 本地的shareobject使用--LSO(本地共享对象):

LSO的用法比较简单,和我们平常操作Cookie大同小异:

1.得到一个共享对象:

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

2.往共享对象里存入值:

var user:Object=new Object();

????????????? user.userName=userName.text;

????????????? user.passWord=passWord.text;

????????????? user.isSaveLogin=(remember.selected==true?1:0);

????????????? so.data.user=user;

3.清除共享对象里的值:

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

??????????????????????????? if(so.data.user!=null){

?????????????????????????????????? so.data.user=null;

??????????????????????????? }

4.读取共享对象里的值:

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

??????????????????????????? if(so.data.user!=null){

?????????????????????????????????? userName.text=so.data.user.userName;

?????????????????????????????????? passWord.text=so.data.user.passWord;

?????????????????????????????????? if(so.data.user.isSaveLogin.toString()=="1"){

????????????????????????????????????????? remember.selected=true;

?????????????????????????????????? }

实例:

Java代码??

收藏代码

  1. <?xml?version="1.0"?encoding="utf-8"?>?????
  2. <mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml"?layout="absolute"?creationComplete="TextSO?();">?????
  3. ????<mx:Script>?????
  4. ????????<!--[CDATA[?????
  5. ????????import?flash.events.SyncEvent;?????
  6. ????????import?flash.events.NetStatusEvent;?????
  7. ????????import?flash.events.MouseEvent;?????
  8. ????????import?flash.net.SharedObject;?????
  9. ????????import?flash.net.NetConnection;?????
  10. ?????????????
  11. ????????private?var?text_so:SharedObject;?????
  12. ????????private?var?nc:NetConnection;?????
  13. ????????private?var?rtmpGo:String;?????
  14. ????????private?var?good:Boolean;?????
  15. ????
  16. ????????public?function?TextSO?():void????
  17. ????????{??????
  18. ?????????????button.label="Send";?????
  19. ?????????????button.addEventListener?(MouseEvent.CLICK,sendMsg);//为发送按钮添加发送事件?????
  20. ?????????????rtmpGo?=?"rtmp://localhost/basicSO";//这里设置FMS服务器的连接地址,basicSO即为,?????
  21. ?????????????//FMS安装目录下Applications下自己手动新建的一个文件夹名称,也是FMS的工程名,就是这么简洁,不可意议?????
  22. ?????????????nc?=?new?NetConnection(?);//产生一个连接对象?????
  23. ?????????????nc.connect?(rtmpGo);//连接到上面的地址?????
  24. ?????????????nc.addEventListener?(NetStatusEvent.NET_STATUS,doSO);//加入连接的监听事件,以便根据连接返回的状态做相应处理?????
  25. ????????}?????
  26. ????
  27. ????????private?function?doSO?(e:NetStatusEvent):void????
  28. ????????{????????
  29. ?????????????good=e.info.code?==?"NetConnection.Connect.Success";//判断是否为连接成功状态?????
  30. ?????????????//连接返回的状态有好几种,大家可以参看FMS的文档,很详尽?????
  31. ?????????????if?(good)//如果连接成轼,执行如下操作?????
  32. ?????????????{?????
  33. ???????????????????text_so=SharedObject.getRemote("test",nc.uri,false);//得到远程共享对象,false属性是设置共享的数据为非持久化的,?????
  34. ????????????????????//即重启服务器后,先前的数据不会保存?????
  35. ???????????????????text_so.connect?(nc);?????
  36. ???????????????????text_so.addEventListener?(SyncEvent.SYNC,checkSO);?????
  37. ???????????????????//为共享对象添加异步事件,这也是服务器同步处理多客户端最关键的地方,?????
  38. ???????????????????//一个客户端进行了什么操作,其它客户端也会有相应的变化,就是通过此事件来完成的?????
  39. ?????????????}?????
  40. ????????}?????
  41. ????
  42. ????????private?function?checkSO?(e:SyncEvent):void????
  43. ????????{?????
  44. ?????????????for?(var?chng:uint;?chng<e.changeList.length;?chng++)?????
  45. ?????????????{?????
  46. ???????????????????switch?(e.changeList[chng].code)?????
  47. ???????????????????{?????
  48. ????????????????????????case?"clear"?:?????
  49. ?????????????????????????????break;?????
  50. ????
  51. ????????????????????????case?"success"?:?????
  52. ?????????????????????????????trace?(text_so.data.msg);?????
  53. ?????????????????????????????case?"change"?://一个客户端改变数据会更新所有客户端?????
  54. ?????????????????????????????textArea.htmlText+=text_so.data.msg?+?"n";?????
  55. ?????????????????????????????break;?????
  56. ???????????????????}?????
  57. ?????????????}?????
  58. ????????}?????
  59. ????
  60. ????????private?function?sendMsg?(e:MouseEvent):void????
  61. ????????{?????
  62. ?????????????text_so.setProperty?("msg",textInput.text);//将新的信息存入共享对象?????
  63. ?????????????textArea.htmlText+=text_so.data.msg?+?"n";//更新客户端的信息列表?????
  64. ????????}?????
  65. ????
  66. ????
  67. ????????]]-->?????
  68. ????</mx:Script>?????
  69. ????<mx:VBox>?????
  70. ????????<mx:TextArea?id="textArea"?width="200"?height="200"/>//信息列表框?????
  71. ????????<mx:TextInput?id="textInput"/>//消息输入框?????
  72. ????????<mx:Button?id="button"?/>//发送按钮?????
  73. ????</mx:VBox>?????
  74. </mx:Application>????

第二种 远程shareobject使用(引用下hacher 47的文章,已经讲得很详细)--RSO?(远程共享对象)?:

??

?RSO?是服务器端的共享对象,服务器端的数据共享可以实现多个客户端数据共享,在这里服务器我采用Flash Media Server3?,FMS?的使用非常简便,你只要在安装目录下找到Applications?目录,并在其下新建一个子目录就可以成为你的工程或项目了。关于FMS?的使用大家可以参考相关文章,本文不做介绍:利用FMS?和RSO?我们可以实现非常多的功能,诸如,聊天室,联机游戏,视频会议,在线视频录制和视频聊天。。。。。。

在这里我用一个简单的聊天室实例为例稍做讲解:

Java代码?? //发送按钮?????
  • ????</mx:VBox>?????
  • </mx:Application> ?
  • (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读