一、开发交互式的媒体应用程序
1.共享对象(Shared objects)

----SharedBall example

这个SharedBall example创建了一个临时的远程共享对象.类似于多人游戏.当一个用户移动这个球,其他用户都能看得到.

我将这个例子改成了Flex版本的了,贴上代码先:

1.新建Flex项目SharedBall

2.新建ActionScript文件:MyBall.as

package {
import mx.core.UIComponent;

public class MyBall extends UIComponent {
   public function MyBall() {
    init();
   }
   public function init():void {
    graphics.beginFill(0xff0000);
    graphics.drawCircle(0, 0, 20);
    graphics.endFill();
   }
}
}

3.初始化应用程序

private function initApp():void {
     mb = new MyBall();
     mb.x = 200;
     mb.y = 200;
     addChild(mb);
     nc = new NetConnection();
     addEventListeners();
     nc.connect("rtmp://localhost/SharedBall");
    }

4.添加事件监听器

private function addEventListeners():void {
     nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
     mb.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
     mb.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
    }

5.当连接服务器成功的时候在netStatus handler中创建远程共享对象

switch(event.info.code) {
      case "NetConnection.Connect.Success" :
       trace("Connect Success");
       so = SharedObject.getRemote("ballPosition", nc.uri, false);
       so.connect(nc);
       so.addEventListener(SyncEvent.SYNC, syncHandler);
       break;
     }

6.当一个用户移动小球的时候,使用setProperty()方法在远程共享对象里面改变球的位置:

private function onMouseMove(event:MouseEvent):void {
     mb.x = mouseX;
     mb.y = mouseY;
     if(so != null) {
      so.setProperty("x", mb.x);
      so.setProperty("y", mb.y);
     }
    }

当远程共享对象被更新的时候,它就会发出sync事件

7.写一个sync事件的handler处理更新所有客户端小球位置

private function syncHandler(event:SyncEvent):void {
     mb.x = so.data.x;
     mb.y = so.data.y;
    }

打开程序运行多个浏览器,当拖动其中一个小球的时候,其它小球都会改变位置。

FMS Dev Guide学习笔记(SharedBall)的更多相关文章

  1. FMS Dev Guide学习笔记(远程共享对象)

    一.开发交互式的媒体应用程序1.共享对象(Shared objects)    ----远程共享对象 在你创建一个远程共享对象之前,创建一个NetConnection对象并且连接到服务器.一旦你创建了 ...

  2. [转载]FMS Dev Guide学习笔记(验证用户)

    一.开发交互式的媒体应用程序 1.使用外部资源验证用户 对于有限数量的客户,请求用户名密码,然后通过外部资源(像数据库.LDAP服务或其它访问授权服务)验证它们,是可行的.     a.SWF在请求连 ...

  3. [转载]FMS Dev Guide学习笔记(验证客户端二)

    一.开发交互式的媒体应用程序 1.使用unique key a. 在客户端ActionScript中创建一个unique key,如下代码所示,unique key的组成为本地电脑时间和一个随机数连接 ...

  4. FMS Dev Guide学习笔记

    翻译一下其中或许对游戏开发有用的一个章节 一.开发交互式的媒体应用程序 1.共享对象(Shared objects)     ----关于共享对象     使用共享对象可以同步用户和存储数据.共享对象 ...

  5. FMS Dev Guide学习笔记(权限控制)

    一.开发交互式的媒体应用程序 1.关于访问(权限)控制     当一个用户访问服务器的时候,默认情况下,他可以访问所有的流媒体文件和共享对象.但是你可以使用服务端ActionScript为流媒体文件和 ...

  6. FMS Dev Guide学习笔记(验证客户端)

    一.开发交互式的媒体应用程序 1.使用客户端对象的属性     当一个客户端连接上服务器上的一个应用,服务端就会创建一个包含这个客户端信息的客户端对象并且将它传递给application.onConn ...

  7. CUDA Programming Guide 学习笔记

    CUDA学习笔记 GPU架构 GPU围绕流式多处理器(SM)的可扩展阵列搭建,每个GPU有多个SM,每个SM支持数百个线程并发执行.目前Nvidia推出了6种GPU架构(按时间顺序,详见下图):Fer ...

  8. ubuntu server guide 学习笔记

    1. 软件包 1.1. dpkg dpkg -l dpkg -l | grep apache2 dpkg -L ufw dpkg -S /etc/host.conf dpkg -i zip_3.0-4 ...

  9. UIView Programming Guide学习笔记

    |View |Creating and Configuring View Objects |Creating and Managing a View Hierarchy |Adjusting the ...

随机推荐

  1. 安装配置Glusterfs

    软件下载地址:http://bits.gluster.org/pub/gluster/glusterfs/3.4.2/x86_64/ 192.168.1.11 10.1.1.241 glusterfs ...

  2. String,StringBuilder,StringBuffer三者的区别(Java)

    这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面. 1. 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer &g ...

  3. 用bayes公式进行机器学习的经典案例

    用bayes公式进行机器学习的经典案例 从本科时候(大约9年前)刚接触Bayes公式,只知道P(A|B)×P(B) = P(AB) = P(B|A)×P(A) 到硕士期间,机器学习课上对P(B|A)P ...

  4. IntelliJ IDEA tomcat 热部署

    1.点击idea中tomcat设置 2.点击Deployment查看Deploy at the server startup 中tomcat运行的包是 xxxx:war 还是其他,如果是xxx:war ...

  5. 《算法》第六章部分程序 part 8

    ▶ 书中第六章部分程序,加上自己补充的代码,包括单纯形法求解线性规划问题 ● 单纯形法求解线性规划问题 // 表上作业法,I 为单位阵,y 为对偶变量,z 为目标函数值 // n m 1 // ┌── ...

  6. RDD中的cache() persist() checkpoint()

    cache只有一个默认的缓存级别MEMORY_ONLY ,而persist可以根据StorageLevel设置其它的缓存级别. cache以及persist都不是action. 被重复使用的(但是)不 ...

  7. flex学习笔记 使用函数,显示实时更新的标签

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  8. 机器学习进阶-图像基本操作-图像数据读取 1.cv2.imread(图片读入) 2.cv2.imshow(图片展示) 3.cv2.waitKey(图片停留的时间) 4.cv2.destroyAllWindows(清除所有的方框界面) 5.cv2.imwrite(对图片进行保存)

    1. cv2.imread('cat.jpg', cv2.IMGREAD_GRAYSCALE)  # 使用imread读入图像(BGR顺序), 使用IMGREAD_GRAYSCALE 使得读入的图片为 ...

  9. day08-字符串操作

    name = 'hello,world,WORLD! 123,你好' #capitalize()#首字母大写,其他全部变成小写,没有iscapitalize()方法print(name.capital ...

  10. Spring boot 定制自己的错误

    1).如何定制错误的页面: ​ 1).有模板引擎的情况下:error/状态码; [将错误页面命名为 错误状态码.html 放在模板引擎文件夹里面的 error文件夹下],发生此状态码的错误就会来到 对 ...