FMS Dev Guide学习笔记(远程共享对象)
一、开发交互式的媒体应用程序
1.共享对象(Shared objects)
----远程共享对象
在你创建一个远程共享对象之前,创建一个NetConnection对象并且连接到服务器.一旦你创建了这个链接,就可以使用SharedObject类中的方法创建和更新远程对象了.一半的使用远程共享对象的步骤如下:
1.创建一个NetConnection对象并且连上服务器:
nc = new NetConnection();
nc.connect("rtmp://localhost/SharedBall");
这是链接服务器最简单的方法.在真正的应用程序中,你应该为NetConnection对象添加事件监听器并且定义handler方法.(阅读SharedBall example一节以获取更多的信息)
2.创建远程共享对象.当连接成功,调用SharedObject.getRemote()方法在服务器创建一个远程共享对象:
so = SharedObject.getRemote("ballPosition", nc.uri, false);
第一个参数是这个远程共享对象的名称.第二个参数是你连接的这个应用程序的URI并且要和在Netconnection.connet()方法里面使用的
URI一致.最简便的方法便是使用nc.uri属性.第三个参数指定这个远程共享对象是否是持久的.false用来指定这个远程对象为临时的.
3.连接上远程共享对象.一旦共享对象被创建,使用你刚刚创建的NetConnection对象将客户端和共享对象建立连接:
so.connect()nc;
你同时也需要通过共享对象为同步事件添加一个事件监听器:
so.addEventListener(SyncEvent.SYNC, syncHandler);
4.使远程共享对象和客户端同步.同步远程对象需要两个步骤.
第一,当一个客户端发生改变或者设置了一个数据值,你需要更新远程共享对象.第二,根据远程共享对象更新所有的客户端.
a. 通过setProperty()方法来更新远程共享对象当一个客户端发生改变的时候:
so.setProperty("x", sharedBall.x);
你必须使用setProperty()方法来更新共享对象里面的值.远程共享对象有一个包括了属性和值的data属性.但是在AS3里,你不能直接将值写入,像这样:
so.data.x = sharedBall.x;//you can't do this
b. 当共享对象被更新的时候,它会发送出一个sync事件.通过读取这个共享对象的data属性同步这个改变到剩余的客户端:
sharedBall.x = so.data.x;
这个步骤通常在sync事件handler里面执行.
FMS Dev Guide学习笔记(远程共享对象)的更多相关文章
- FMS Dev Guide学习笔记
翻译一下其中或许对游戏开发有用的一个章节 一.开发交互式的媒体应用程序 1.共享对象(Shared objects) ----关于共享对象 使用共享对象可以同步用户和存储数据.共享对象 ...
- FMS Dev Guide学习笔记(SharedBall)
一.开发交互式的媒体应用程序1.共享对象(Shared objects) ----SharedBall example 这个SharedBall example创建了一个临时的远程共享对象.类似于多人 ...
- FMS Dev Guide学习笔记(权限控制)
一.开发交互式的媒体应用程序 1.关于访问(权限)控制 当一个用户访问服务器的时候,默认情况下,他可以访问所有的流媒体文件和共享对象.但是你可以使用服务端ActionScript为流媒体文件和 ...
- FMS Dev Guide学习笔记(验证客户端)
一.开发交互式的媒体应用程序 1.使用客户端对象的属性 当一个客户端连接上服务器上的一个应用,服务端就会创建一个包含这个客户端信息的客户端对象并且将它传递给application.onConn ...
- [转载]FMS Dev Guide学习笔记(验证用户)
一.开发交互式的媒体应用程序 1.使用外部资源验证用户 对于有限数量的客户,请求用户名密码,然后通过外部资源(像数据库.LDAP服务或其它访问授权服务)验证它们,是可行的. a.SWF在请求连 ...
- [转载]FMS Dev Guide学习笔记(验证客户端二)
一.开发交互式的媒体应用程序 1.使用unique key a. 在客户端ActionScript中创建一个unique key,如下代码所示,unique key的组成为本地电脑时间和一个随机数连接 ...
- JavaScript:学习笔记(9)——Promise对象
JavaScript:学习笔记(9)——Promise对象 引入Promise Primose是异步编程的一种解决方案,比传统的解决方案回调函数和事件更加合理和强大.如下面为基于回调函数的Ajax操作 ...
- 《python基础教程(第二版)》学习笔记 类和对象(第7章)
<python基础教程(第二版)>学习笔记 类和对象(第7章) 定义类class Person: def setName(self,name): self.name=n ...
- JavaScript:学习笔记(10)——XMLHttpRequest对象
JavaScript:学习笔记(10)——XMLHttpRequest对象 XHR对象 使用XMLHttpRequest (XHR)对象可以与服务器交互.您可以从URL获取数据,而无需让整个的页面刷新 ...
随机推荐
- for练习.html
<script> 偶数 var str=""; for (var i = 1 ; i <= 100; i++){ if (i%2 == 0) { //str = ...
- Select模式和超时
fd_set rset; FD_ZERO(&rset); int nready; int maxfd; int fd_stdin = fileno(stdin); if(fd_stdin &g ...
- 使用Nginx+Lua实现自定义WAF
使用Nginx+Lua实现自定义WAF 版权声明:全部抄自赵班长的GitHub上waf项目 功能列表: 支持IP白名单和黑名单功能,直接将黑名单的IP访问拒绝. 支持URL白名单,将不需要过滤的URL ...
- implementation compile的区别
implementation不可以依赖传递:依赖对app Module 是不可见的 compile可以依赖传递:依赖对app Module 是可见的 AndroidStudio升级到3.0以上后,第一 ...
- three.js学习:纹理Texture之平面纹理
index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- mybatis-plus 从2.x到3.x升级指南
Mybatis-Plus mybatis-plus 2.x 到 3.x 有以下改进 分页查询可以直接返回Ipage<T>的子类(下面会有详细使用说明) Wrapper<T> ...
- VS2015 无法启动 IIS服务器
打开VS2012解决方案资源管理器 -> 点选 Web 项目选择 -> 属性 -> Web ->创建虚拟目录. 再次运行Web项目,成功.
- python-设计模式:抽象类
抽象类:用来分离主体框架和局部实现,或将共用和定制解藕.从抽象类继承必须实现所有层级未被实现的抽象方法(被装饰器abstractmethod装饰的方法),否则无法创建实例. 定义抽象类,必须继承ABC ...
- iOS第三方登录qq
http://blog.sina.com.cn/s/blog_7b9d64af0101e5vj.html
- <转载> 22种代码味道(Martin Fowler与Kent Beck) http://blog.csdn.net/lovelion/article/details/9301691
Martin Fowler在Refactoring: Improving the Design of Existing Code(中译名:<重构——改善既有代码的设计>)一书中与Kent ...