• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>FLASH AS 编程>FMS>文章内容
  • 一步一步学Flash Media Server(六)

  • 来源:blog.smilecn.net 作者:arrowyoung 2008-08-08 【

当我们要加的功能越来越多时,就会发现程序会越写越大,这样我们就需要更好的组织我们的程序,用类是最好方法,但FMS用的是AS1.0的语法,没有真正意义的类,但也能完成类的简

单功能,不管怎么样,总比没有类好,今天我们就来看一下如果在AS1.0里使用类,当然这不是真正的类.

现在我们将上一节中用到的用户列表做一下修改,写成一个类,上一节中我们用了userListArray这样一个数组来存储用户列表,现在我们把用户列表写成一个类:


先建一个UserList.asc文件,这就是我们要用的类的文件名,当然UserList也是类名(其实并不需要文件名和类名相同,因为这不是真正意义上的类)

  1. function UserList(){
  2.     this.listArray = [];//也可以用new Array(),不过听说[]效率更高;
  3. }
  4.  
  5. UserList.prototype.addUser = function(userName){
  6.     this.listArray.push(userName);
  7. }
  8.  
  9. UserList.prototype.delUser = function(userName){
  10.     var len = this.listArray.length;
  11.     for(var i=0;i<len;i++){
  12.         if(this.listArray[i] == userName){
  13.             this.listArray.splice(i,1);
  14.             break;
  15.         }
  16.     }
  17. }
  18.  
  19. UserList.prototype.checkOnline = function(userName){
  20.     var len = this.listArray.length;
  21.     for(var i=0;i<len;i++){
  22.         if(this.listArray[i] == userName){
  23.             return true;
  24.         }
  25.     }
  26.     return false;
  27. }
  28.  
  29. UserList.prototype.getUserList = function(){
  30.     return this.listArray;
  31. }

function function UserList(){} 这个相当于类里面的构造函数

UserList.prototype. 这种相当于给UserList这个类加入方法,用过as1.0或者as2.0的朋友应该都知道prototype的用法

在这里我们加了四个方法

addUser 将用户加入到列表中
delUser 将用户从列表中删除
checkOnline 检查用户是否在列表中
getUserList 得到用户列表数组

这些代码应该很容易懂

再来看修改后的main.asc:

  1. load("UserList.asc");
  2. application.onAppStart = function() {
  3.     this.chatMsgArray = new Array();
  4.     this.userList = new UserList();
  5. }
  6.  
  7. application.onConnect = function(client, userName) {
  8.     if(this.userList.checkOnline(userName)){
  9.         this.rejectConnection(client);
  10.         return;
  11.     }
  12.     this.acceptConnection(client);
  13.     client.userName = userName;
  14.     this.userList.addUser(userName);
  15.     sendUserList();
  16.     //客户端调用方法
  17.     client.getMsg = function(){
  18.         return application.chatMsgArray;
  19.     }
  20.     client.sendMsg = function(msg){
  21.         var chatInfo = this.userName + " : " + msg;
  22.         application.chatMsgArray.push(chatInfo);
  23.         sendMsgToClient(chatInfo);
  24.     }
  25. }
  26.  
  27. application.onDisconnect = function(client) {
  28.     trace("用户:"+client.userName+" 离开");
  29.     this.userList.delUser(client.userName);
  30.     sendUserList();
  31. }
  32.  
  33.  
  34. application.onAppStop = function() {
  35.    
  36. }
  37.  
  38. function sendMsgToClient(chatInfo){
  39.     var len = application.clients.length;
  40.     for(var i=0;i<len;i++){
  41.         application.clients[i].call("getMsgInfo",null,chatInfo);
  42.     }
  43. }
  44.  
  45. function sendUserList(){
  46.     var len = application.clients.length;
  47.     for(var i=0;i<len;i++){
  48.         application.clients[i].call("getUserList",null,application.userList.getUserList());
  49.     }
  50. }

跟上一节的代码相比,首先多了一个load(”UserList.asc”),load能够将其它的asc文件加入进来,相当于导入了,也可以理解为包括,就是两个文件成了一个文件

其他的修改应该很简单,很容易看懂,我就不多讲了.

从这个程序代码的多少上看,并没有减少多少,但这只是一个小程序,当程序越大时就能看出这样写的好处了.

客户端不用改,现在看一下效果,应该和上一节是一样的.

下节继续.

(本教程如需转载请注明出处!)




上一篇:一步一步学Flash Media Server(五)   下一篇:一步一步学Flash Media Server(七)
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)