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获取数据,而无需让整个的页面刷新 ...
随机推荐
- C#语言时间
string x = "abcdefg"; 定义字符串 int length = x.Length; 定义长度 string y = x.Substring(1, 2); 意思的从 ...
- AFNetWorking 上传功能使用及源码分析
使用方法比较多,这里列举两种: 第一种: // 1. 使用AFHTTPSessionManager的接口 AFHTTPSessionManager *manager = [AFHTTPSessionM ...
- Java - 26 Java 数据结构
Java 数据结构 Java工具包提供了强大的数据结构.在Java中的数据结构主要包括以下几种接口和类: 枚举(Enumeration) 位集合(BitSet) 向量(Vector) 栈(Stack) ...
- 小朋友学C语言(6)
(一) 先动手编写一个程序: #include <stdio.h> int main() { if(1) { printf("The condition is true!\n&q ...
- SOA解决方案Dubbo学习入门
1.面向服务架构SOA简介 SOA:Service Oriented Architecture 也即现在常被提及的面向服务编程架构,其相对于传统的垂直架构来说是一种比较新的架构.
- swap空间不够导致安装失败解决方法
在安装Oracle的时候,可能因为我们分配的swap空间不够导致安装失败.处理步骤如下: SWAP空间为2G [root@linux01 oracle]# free total ...
- 【Selenium-WebDriver自学】Selenium-IDE调试(四)
==================================================================================================== ...
- Debug版本正常运行,Release版本编译通过但运行崩溃
解决这个问题之前,第一个想的是Debug版本和Release版本有什么区别 Debug版: 经过编译器编译出的项目.exe文件大,而且生成的二进制命令没有经过编译器的优化.项目中包含着丰富的调试信息, ...
- fabric读书笔记
chaincode:一种类似于智能合约的代码,通过执行这个代码与账本交互.chaincode存储在节点上 transaction:一次chaincode的运行过程 contract:满足某个条件下,将 ...
- hadoop/etc/hadoop 下没有mapred-site.xml,只有mapred.xml.template
默认情况下,/usr/local/hadoop/etc/hadoop/文件夹下有mapred.xml.template文件,我们要复制该文件,并命名为mapred.xml,该文件用于指定MapRedu ...