- 浏览: 1453929 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (564)
- 算法 (7)
- 流金岁月 (1)
- Javascript (30)
- actionscript (108)
- as3.0 game (14)
- flex (84)
- fms2 (27)
- 正则表达式 (7)
- 开源组件代码(as3.0) (1)
- Pv3d (13)
- Cairngorm (4)
- vbs (54)
- VB程序设计 (26)
- 计算机应用与维护 (4)
- 职场实用穿衣技巧 (3)
- 历史风云 (15)
- 淡泊明志,宁静致远 (12)
- 情感 (26)
- 杂谈 (41)
- 越南风 (14)
- DirectX (9)
- Dev-cpp (11)
- 回望百年 (2)
- 建站经验 (2)
- Python (24)
- 网络赚钱 (4)
- php (2)
- html (1)
- ob0短址网 (1)
- ob0.cn (1)
- wordpress (1)
- pandas logistic (1)
- haxe (1)
- opencv (1)
- 微信小程序 (3)
- vue (3)
- Flutter (1)
最新评论
-
GGGGeek:
第一个函数滚动监听不起作用,onPageScroll可以
微信小程序--搜索框滚动到顶部时悬浮 -
naomibyron:
解决办法:工具 -> 编译选项 -> 编译器 ...
dev-c++中编译含WINSOCK的代码出现错误的解决方法 -
haichuan11:
这个…… 代码不全真的是让人很憋屈的感觉啊
actionScript 3.0 图片裁剪及旋转 -
chenyw101:
老兄能留个QQ号吗?具体的我有些东西想请教下你
用VB制作网站登陆器 -
yantao1943:
貌似有点问题,只派发一次事件啊
使用ActionScript 2.0或ActionScript 3.0处理音频文件的提示点(cue
理解共享对象
共享对象可以存储任何Flash支持的数据类型。就存放位置来说,共享对象可以分成存在客户端计算机的本地型,以及存放在服务器上的远程型。你可以用它来记录用户的相关信息(如用户名、性别和其它设置参数等),或者用在服务器端,存储其它联机用户实时分享的信息
共享对象意味着用户可以在不同的用户之间、不同的同一台服务器上的应用程序实体。FlashCom server 支持三种不同的共享对象:Local、remote和server-side。下面简单介绍下这三个共享对象。
本地共享对象(Local shared object)
用于存取本地的数据,存储在用户的计算机硬盘中,并可以在不同的时间被其它应用程序访问。本地共享对象的扩展名为.sol,默认的存储路径是 c:\documents and Settings\登录名称\Application Data\Macromedia\Flash Player\服务器网域名称\影片路径\影片文件名.swf\。本地共享对象也可以是短暂的,也就是说只有但应用程序运行时可用。我们也可以不连接 Flashcom server而使用本地共享对象。更多的本地共享对象的信息,可以参考手册中的SharedObject.getLocal方法。
建立和存取本地共享对象的方法如下:
确认资料是否存储成功可以通过onstatus事件来获取
返回的code值为
SharedObject.Flush.Success(写入成功)
SharedObject.Flush.Failed(写入失败)
代码示例:
远程共享对象(remote shared object)
通过Flash影片的ActionScript程序,在服务器端建立能让不同联机用户共同存取的资料,称为远程共享对象。和本地共享对象一样,远程共享对象可以被本地计算机存取,不同的是在资料存储在服务器端,所以任何用户都可以连接到远程共享对象访问到相同的信息。默认的存储路径是应用程序实体路径下的 sharedobjects文件夹,扩展名是.fso。
远程共享对象也是最常用的共享对象类型。每当联机用户(或服务器端程序)更新远程共享对象的内容,其它联机到相同应用程序实体的用户将自动收到更新内容的事件(onSync),保持彼此资料的同步。应用程序就是运用这个机制建立的。
例如,你可以打开一个远程共享对象,如电话号码表(在服务器端持久有效)。当用户端对该共享对象作任何更改的时候,修改后的数据对其他连接到该远程共享对象的用户是自同步的。如果因为某种原因,更新了本地的数据信息但是没有连接到服务器,那么所作的更改会在下一次连接到服务器的时候同步远程共享对象。
更多的信息可以参考手册中的SharedObject.getRemote方法。
建立远程共享对象的方法:
远程共享对象的数据读取和写入方法和本地共享对象类似,也是通过data属性和flush方法。
使用下面语句可以把数据资料写入服务器端应用程序文件夹共享对象目录
当远程共享对象的内容改变或者初次联机时,它都会向客户端发出onsync (同步)事件,好让所有联机用户都能实时取得最新的共享对象资料。
示例代码:
代理共享对象(proxied shared object)
代理共享对象是可以在用户端和服务器端共享的一种远程共享对象,区别在于它是由服务器端的ActionScript程序建立的,例如,在服务器端有两个室的实体chat01和chat02,在chat02中可以连接到在chat01中定义的共享对象,更多的信息可以参考手册的 SharedObject.get方法。
和客户端的sharedobject不同,设置共享变量的值要通过 SharedObject.setProperty,取得共享变量的值通过 SharedObject.getProperty 。
实例代码:
在使用远程共享对象之前,请确认SharedObject.connect 返回 true,在客户端调用SharedObject.flush 方法只是在本地拷贝了一份,要确保服务器端的拷贝,必须在服务器端使用SharedObject.flush 方法,如:
如果在同一时间有多个客户端或者服务器端在同步远程共享对象的话,就会出现问题,要解决这个冲突可以通过下面的方法。
1. 使用不同的位置存储不同用户的信息
这是最简单的一种方法,例如,在室给每个用户不同的位置存放数据,同步只修改自己的数据部分。
2. 分配资料所有者
复杂一点的方法就是定义一个用户为有限的时间内该数据资料的所有者,所有者可以锁定服务器端的共享对象,直到返回可用信息后方可同步另外的数据。下面是示例代码:
通过一个记录游戏最高分的应用程序来说明解决同步冲突的问题,当前系统保存的最高分是95,同时有两个用户打破了这个记录,成绩分别为105和110,如果不锁定最高分的话,两个成绩都会同时执行updateHighScore方法,有可能其中一个成绩会无法记录下来。使用锁定共享对象的方法解决了这样一个问题。
3. 通知客户端
当服务器端收到客户端的同步请求的时候,SharedObject.onSync事件会通知用户端更改被拒绝,然后提供一个用户界面来给用户解决这种冲突。这种技术通常用于客户端不是经常更新的情况。
4. 接受某些,拒绝其它的
应用程序根据“先到先服务”的原则来解决同步的冲突问题。通常需要于客户自己重新请求来解决冲突。
5. 通过send方法来提高控制级别
SharedObject.send 命令给所有连接到该远程共享对象的客户端广播消息,也包括发送者本人。 (编辑:非熊)
共享对象可以存储任何Flash支持的数据类型。就存放位置来说,共享对象可以分成存在客户端计算机的本地型,以及存放在服务器上的远程型。你可以用它来记录用户的相关信息(如用户名、性别和其它设置参数等),或者用在服务器端,存储其它联机用户实时分享的信息
共享对象意味着用户可以在不同的用户之间、不同的同一台服务器上的应用程序实体。FlashCom server 支持三种不同的共享对象:Local、remote和server-side。下面简单介绍下这三个共享对象。
本地共享对象(Local shared object)
用于存取本地的数据,存储在用户的计算机硬盘中,并可以在不同的时间被其它应用程序访问。本地共享对象的扩展名为.sol,默认的存储路径是 c:\documents and Settings\登录名称\Application Data\Macromedia\Flash Player\服务器网域名称\影片路径\影片文件名.swf\。本地共享对象也可以是短暂的,也就是说只有但应用程序运行时可用。我们也可以不连接 Flashcom server而使用本地共享对象。更多的本地共享对象的信息,可以参考手册中的SharedObject.getLocal方法。
建立和存取本地共享对象的方法如下:
1. var so= SharedObject.getLocal('myCookie') //建立本地共享对象 2. //存储资料 3. //注意:不管是读取还是写入资料到本地共享对象,都必须通过data属性。 4. so.data.userName='liu21st' ; 5. so.data.msg='世纪流年' ; 6. so.data.counter=10 ; 7. //在默认状态下,以上资料并不会马上写入用户的磁盘,必须等到动画被关闭,或者用户离开你的网站后,才会写入磁盘。如果要立即写入的话,必须使用flush方法。如下: 8. so.flush();
确认资料是否存储成功可以通过onstatus事件来获取
返回的code值为
SharedObject.Flush.Success(写入成功)
SharedObject.Flush.Failed(写入失败)
代码示例:
1. so.onStatus = function (info){ 2. var status=info.code ; 3. if ( status=='SharedObject.Flush.Success' ){ 4. trace('写入成功' ); } 5. else trace('写入失败');
远程共享对象(remote shared object)
通过Flash影片的ActionScript程序,在服务器端建立能让不同联机用户共同存取的资料,称为远程共享对象。和本地共享对象一样,远程共享对象可以被本地计算机存取,不同的是在资料存储在服务器端,所以任何用户都可以连接到远程共享对象访问到相同的信息。默认的存储路径是应用程序实体路径下的 sharedobjects文件夹,扩展名是.fso。
远程共享对象也是最常用的共享对象类型。每当联机用户(或服务器端程序)更新远程共享对象的内容,其它联机到相同应用程序实体的用户将自动收到更新内容的事件(onSync),保持彼此资料的同步。应用程序就是运用这个机制建立的。
例如,你可以打开一个远程共享对象,如电话号码表(在服务器端持久有效)。当用户端对该共享对象作任何更改的时候,修改后的数据对其他连接到该远程共享对象的用户是自同步的。如果因为某种原因,更新了本地的数据信息但是没有连接到服务器,那么所作的更改会在下一次连接到服务器的时候同步远程共享对象。
更多的信息可以参考手册中的SharedObject.getRemote方法。
建立远程共享对象的方法:
1. var client_nc = new NetConnection(); 2. client_nc.connect('rtmp://localhost/videochat/room1' ); 3. so = SharedObject.getRemote('records',client_nc.url); //数据资料不写入磁盘 4. so.connect(client_nc);
远程共享对象的数据读取和写入方法和本地共享对象类似,也是通过data属性和flush方法。
使用下面语句可以把数据资料写入服务器端应用程序文件夹共享对象目录
1. so = SharedObject.getRemote('records',client_nc.url,true); 2. //该语句远程共享的文件名将是records.fso
当远程共享对象的内容改变或者初次联机时,它都会向客户端发出onsync (同步)事件,好让所有联机用户都能实时取得最新的共享对象资料。
示例代码:
1. so.onSync = function(list) { 2. for (var k in list) { 3. trace('name = ' + list[k].name + ', event = ' + list[k].code ); 4. } 5. // do whatever else you want to do here 6. }
代理共享对象(proxied shared object)
代理共享对象是可以在用户端和服务器端共享的一种远程共享对象,区别在于它是由服务器端的ActionScript程序建立的,例如,在服务器端有两个室的实体chat01和chat02,在chat02中可以连接到在chat01中定义的共享对象,更多的信息可以参考手册的 SharedObject.get方法。
和客户端的sharedobject不同,设置共享变量的值要通过 SharedObject.setProperty,取得共享变量的值通过 SharedObject.getProperty 。
实例代码:
1. application.appStart = function() { 2. nc = new NetConnection (); 3. nc.connect('rtmp://' + master_server + '/' + master_instance ); 4. proxySO = SharedObject.get('myProxy',true,nc ); 5. // Now, whenever the client asks for a persistent 6. // shared object called myProxy they will receive myProxy 7. // shared object from the master_server/master_instance 8. };
1. myInfo = SharedObject.get('foo'); 2. var addr = myInfo.getProperty('address' ); 3. myInfo.setProperty('city', 'San Francisco' ); 4. var names = sharedInfo.getPropertyNames (); 5. for ( x in names ){ 6. var propVal = sharedInfo.getProperty(names[x ]); 7. trace('Value of property ' + names[x] + ' = ' + propVal ); 8. }
在使用远程共享对象之前,请确认SharedObject.connect 返回 true,在客户端调用SharedObject.flush 方法只是在本地拷贝了一份,要确保服务器端的拷贝,必须在服务器端使用SharedObject.flush 方法,如:
1. // Sample server-side code for flushing a persistent shared object 2. // to the server 3. // Get the shared object when the application is loaded. 4. application.onAppStart = function() 5. { 6. application.mySO = SharedObject.get('SharedObjName', true ); 7. } 8. // When a user disconnects, flush the shared object. 9. application.onDisconnect = function(client ) 10. { 11. application.mySO.flush (); 12. }
如果在同一时间有多个客户端或者服务器端在同步远程共享对象的话,就会出现问题,要解决这个冲突可以通过下面的方法。
1. 使用不同的位置存储不同用户的信息
这是最简单的一种方法,例如,在室给每个用户不同的位置存放数据,同步只修改自己的数据部分。
2. 分配资料所有者
复杂一点的方法就是定义一个用户为有限的时间内该数据资料的所有者,所有者可以锁定服务器端的共享对象,直到返回可用信息后方可同步另外的数据。下面是示例代码:
通过一个记录游戏最高分的应用程序来说明解决同步冲突的问题,当前系统保存的最高分是95,同时有两个用户打破了这个记录,成绩分别为105和110,如果不锁定最高分的话,两个成绩都会同时执行updateHighScore方法,有可能其中一个成绩会无法记录下来。使用锁定共享对象的方法解决了这样一个问题。
1. application.onAppStart = function() 2. { 3. application.scoreSO = SharedObject.get('high_score_so', true ); 4. application.scoreSO.onSync = function(listVal ) 5. { 6. trace('got an onSync on scoreSO' ); 7. } 8. } 9. application.onConnect = function(newClient,name,passwd ) 10. { 11. newClient.updateHighScore = function(final_score ) 12. { 13. application.scoreSO.lock (); 14. if ( application.scoreSO.getProperty('high_score_so') < final_score ) 15. { 16. application.scoreSO.setProperty('high_score_so', final_score ); 17. } 18. application.scoreSO.unlock (); 19. } 20. }
3. 通知客户端
当服务器端收到客户端的同步请求的时候,SharedObject.onSync事件会通知用户端更改被拒绝,然后提供一个用户界面来给用户解决这种冲突。这种技术通常用于客户端不是经常更新的情况。
4. 接受某些,拒绝其它的
应用程序根据“先到先服务”的原则来解决同步的冲突问题。通常需要于客户自己重新请求来解决冲突。
5. 通过send方法来提高控制级别
SharedObject.send 命令给所有连接到该远程共享对象的客户端广播消息,也包括发送者本人。 (编辑:非熊)
发表评论
-
控制连接数量和密码保护-flashcom教程 密码保护
2008-10-30 14:03 1240学习flashcom+学习英语(烂到死),无任何目的,本篇仅 ... -
AMF3 + AS 3.0 + ASP.NET 完整配置过程及源文件
2008-09-11 16:04 3584AMF3 + AS 3.0 + ASP.NET 完整配置过程及 ... -
FLEX结合FMS制作在线视频认证
2008-09-09 14:24 3837很多交友网站都具体在线视频认证能,如51.com。参考它的认 ... -
flex 3 + .net开发flash Remoting四[完整代码
2008-08-28 16:11 2216一. 相关说明: 本篇将呈现完整的Flash Remot ... -
FMS Client AS 自訂類別物件傳遞
2008-08-27 15:04 1061透過與 FMS 連線,可以共享 SharedObject 物件 ... -
FMS 常常会用到 3个Call 和3个Send
2008-08-27 14:51 2199FMS 常常会用到 3个Call 和3个Send 关于Flas ... -
flex as3 fms相关的资料(转)
2008-08-27 14:36 1705FMS.rar FMS系列教程http://www.fs2 ... -
视频类
2008-08-27 09:21 1860Flash Player作为流媒体的表现形式之一,视频编码是其 ... -
一步一步学Flash Media Server
2008-08-26 18:03 4360从今天起,我们来学习一下 Flash Media Server ... -
再说说onSync,SharedObject
2008-08-26 16:44 1607* 最多人不懂的就是:那个list参数看代码: my_rso ... -
视频监控软件(2)---异步录像
2008-08-26 16:10 1387不好意思,让大家久等了!今天我要实现的一个功能是异步录像!先讲 ... -
视频监控软件(1)---FMS视频流共享
2008-08-26 16:07 2722呵呵!临近毕业了,本人选择的毕业设计题目是(基于B/S模式的 ... -
flash fms WebService 交互过程
2008-08-26 16:01 1735//flash客户端call服务器端的方法,服务器端调用WS的 ... -
游戏开发常用FMS类
2008-08-26 15:51 1458游戏开发常用FMS类 ... -
FLEX提高篇--------ShareObject对象详解
2008-08-26 14:23 1129ShareObject,顾名思义共享对象,而通常意义上的共享, ... -
客户端呼叫Flash Medis Server3服务端入门
2008-08-26 14:02 1475当你不仅仅只想用FLEX来做纯业务数据的管理时,或者当你的项目 ... -
FMS两种方式实现简易聊天室
2008-08-26 14:01 1690原理和代码都很简单,没什么好说的. 一:利用ShareOb ... -
FLEX提高篇---------FMS简易聊天室加强版
2008-08-26 13:37 1837今天写了下简易聊天室的加强版 , 其实功能也十分有很 , 不过 ... -
Flex连接FMS实现用户列表(使用SharedObject)
2008-08-26 13:33 39911.先在FMS的安装目录中添加自己的应用(例如我的目录D:\M ... -
FMS 教程(SharedObject)用户列表
2008-08-26 13:32 2939FMS实现用户列表,一般都是利用List组件,和SharedO ...
相关推荐
2. **获取权限**:在用户同意共享屏幕后,FMS会返回一个包含屏幕信息的对象,客户端可以通过这个对象启动屏幕捕获。 3. **编码与发送**:客户端使用屏幕共享API将捕获到的屏幕帧进行编码(如使用H.264编码),然后...
在建立与FMS服务器的连接过程中,客户端首先需要创建一个`NetConnection`对象,并调用其`connect`方法来尝试连接。成功连接后,会触发`onStatus`事件,其中包含了连接状态的信息。例如: ```as var nc = new ...
《FMS3.5开发指南》是一份针对Adobe Flash Media Server 3.5的详细教程,旨在帮助开发者理解和创建富媒体应用。FMS是用于提供流媒体和交互式服务的服务器,支持即时启动、直播视频流和根据用户带宽调整流速率等功能...
Red5是基于Java开发的,能够实现与Adobe的FMS(Flash Media Server)相似的功能,包括实时流媒体传输、录制播放视频、共享对象以及远程调用等。通过Red5,开发者可以构建诸如视频播放网站、远程教育平台、视频会议...
通过学习和分析这份资料,开发者不仅可以掌握Flex和FMS3的基本用法,还能了解到实时通信和数据共享的关键技术,为构建类似的应用程序打下坚实基础。同时,这份资料的易读性和实用性也表明,它是初学者和有一定经验的...
FMS通常用于实时流媒体、数据共享和记录等功能,但在这里,我们关注的是如何在没有FMS的情况下进行音频录制。 在Flash 10及以上版本或Adobe AIR 2中,Flash提供了内置的 microphone API,使得开发者可以直接在Flash...
这个项目允许玩家通过网络进行实时对战,共享游戏体验。 【AS3】是Adobe Flash Player支持的脚本语言,用于创建互动式内容、动画和应用程序。在本项目中,AS3被用来编写游戏的逻辑,包括棋子移动规则、胜负判断、...
**共享对象**: 共享对象(Shared Objects)是FMS中用于在多个连接间共享数据的关键技术。它们分为持久性和非持久性两种,其中非持久性共享对象用于临时存储会话数据。 #### 5. 摄像头与麦克风的设置 **参数方法**:...
Red5是一款基于Java开发的开源免费Flash流媒体服务器,与Adobe的FMS(Flash Media Server)类似,提供了丰富的功能,包括实时流传输、录制、共享对象、远程调用以及视频播放与录制等。由于其开源性质,用户可以根据...
- 这个文件夹将作为特定项目的根目录,其中可以存放FLV文件、共享对象等资源。 - 如果需要编写服务器端脚本,则可以在该文件夹内创建`main.asc`文件。 4. **服务器管理**: - 使用`fms2_console.swf`管理服务器...
- **互动性**:通过共享对象,FMS允许用户之间进行实时交互,如聊天室、游戏等。 - **可扩展性**:开发者可以通过ActionScript 3.0在服务器端编写自定义应用程序,增强功能。 #### 1.3 Flash Media Server的技术...
标题“flex as资料”指的是与Adobe Flex和ActionScript(AS)相关的学习材料,这是一门用于构建富...同时,参考提供的FMS3中文翻译文档,可以帮助你更好地理解如何将服务器端与客户端应用结合起来,实现更复杂的功能。
Red5支持RTMP(Real Time Messaging Protocol)协议,能够与Adobe Flash Player无缝协作,提供流化FLV、MP3文件、实时录制、共享对象、实时视频播放以及Remoting等特性。由于Red5与FMS的兼容性,用户在替换FMS后,...
Red5是一个开源的Java编写的Flash流媒体服务器,支持将视频/音频文件转化为流媒体播放格式(如FLV和MP3),录制客户端播放流(仅限FLV格式),共享对象,现场直播流发布以及远程调用(AMF)。Red5的技术特点和应用...
Red5使用Real-Time Messaging Protocol (RTMP)作为传输协议,与FMS完全兼容,支持流化FLV和MP3文件、实时录制客户端流为FLV文件、共享对象以及Remoting等功能。这意味着,如果你的客户端已经能够与FMS通信,那么它们...
在深入探讨SIEMENS PLC(Programmable Logic Controller,可编程逻辑控制器)的常用英语缩写之前,我们有必要先理解PLC的基本概念及其在工业自动化领域的重要地位。PLC是一种专为工业环境设计的计算机系统,用于控制...
7. 布尔运算:CAD中,布尔运算包括并集、差集和交集,用于组合或修改图形对象。打断命令不属于布尔运算。 8. FMS(柔性制造系统)优点:FMS能提高劳动生产率,缩短生产周期,但不会增加在制品数量和库存。 9. 数控...