频道直达 - 学院 - 下载 - 交易 - 特效 - 字库 - 手册 -排名-工具- 繁體
网页教学网站开发 设为首页
加入收藏
联系我们
建站搜索: 常用广告代码   用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 网站开发工具应用教程 -> Flash教程 -> Flash MX 编程深层次应用-网络连线游戏(6)

Flash MX 编程深层次应用-网络连线游戏(6)

作者:未知  来源:http://edu.chinaz.com  发布时间:2005-7-18 22:58:51  发布人:acx

减小字体 增大字体

7.4 在线用户列表区

    

在线用户列表是联网对战类游戏中非常重要的环节。程序中通过一个数组存放在线用户的名单,然后根据游戏的状态来不断地更新这个数据中的内容,从而实现在线用户的快速、准确地更新。

先创建一个空的MC,名字叫objChatUserRecord,主要是放置一些基本函数,其代码如下:

    var records =  new Array();

    //最多允许300个用户在线

    var max = 300;

    function appendRecord(msg) {

        //增加一个新用户

             if(records.push(msg) > max )

                      records.shift();

    }

    function appendRecords(array) {

        //增加一批新用户

             var i ;

             for(i=0; i < array.length; i++)

                      appendRecord(array[i]);

    }

    function removeAll() {

        //清除全部用户

             delete records;

             records = new Array();

    }

    function removeRecord(val) {

        //清除某个用户

             var i;

             for(i = 0; i< records.length; i++)

                      if(records[i] == val)

                                records.splice(i, 1);

    }

    function setMax(m) {

             max = m;

    }

    function getRecord(idx) {

             if(idx >= 0 && idx <= max)

                      return records[idx];

             else

                      return null;

    }

    function getSize() {

        //取用户数

             return records.length;

    }

    function toString(start, end) {

        //将这些用户名转化成字符串显示出来

             var i , ret;

             for (ret ="", i =start; i< end ;i++) {

                      if(i >= 0 && i <= max)

                                ret += records[i] + "\n";

             }

             return ret;

    }

进入画板列表的MC中,其程序如下:

    //最大显示行数

    var maxLines = 18;

    //是否自动滚动

    var autoScroll = false;

    //从第几行开始

    var startLine = 0;

    //用户列表初始为空

    var userlist = null;

    //指向当前内容

    function attach(cr) {

             userlist = cr;                

    }

    //设置自动滚动

    function setAutoScroll(auto) {

             autoScroll = auto;

    }

    //重新更新文本显示框中的内容

    function refresh() {

             if( autoScroll ==  true) {

                      startLine = userlist.getSize() - maxLines;

                      this.output = userlist.toString(startLine, userlist.getSize());

             }

             else {

                      this.output = userlist.toString(startLine, startLine+maxLines);

             }

    }

    //把从数组中X行开始的内容显示出来

    function showFromX(x) {

             this.output = userlist.toString(x, x+maxLines);         

    }

    //翻到前一屏

    function prevPage() {

             startLine -= maxLines;

             if(startLine < 0)

                      startLine = 0;

             showFromX(startLine);

    }

    //翻到后一屏

    function nextPage() {

             startLine += maxLines;

             if(startLine >= userlist.getSize())

                      startLine = startLine - maxLines;

             showFromX(startLine);       

    }

    //翻前一行

    function prev() {

             startLine -= 1;

             if(startLine < 0)

                      startLine = 0;

             showFromX(startLine);

    }

    //翻后一行

    function next() {

             startLine += 1;

             if(startLine >= userlist.getSize())

                      startLine = startLine - 1;

             showFromX(startLine);

    }

这段看上去好像都是一些基本函数,下面请看通信部分是如何使用这些基本函数的:

function onXML_Receive(x) {

……

    } else if (e.nodeName == "USR") {

        //如果是用户的登陆操作

             if (e.attributes.Value == "ON") {

            //往用户列表数组追加一个新用户

                      objChatUserRecord.appendRecord(e.attributes.Param);

                      objUserDisplay.attach(objChatUserRecord);

            //重新更新用户列表显示

                      objUserDisplay.refresh();

                      if (_root.now_play_table == 0) {

                                objChatDisplay.chat_display.htmlText += sys+e.attributes.Param+" is Entering..."+newline;

                      }

             } else if (e.attributes.Value == "OFF") {

            //如果是一个用户离开操作,则从数组中删除该用户

                      objChatUserRecord.removeRecord(e.attributes.Param);

                      objUserDisplay.attach(objChatUserRecord);

            //重新更新用户列表显示

                      objUserDisplay.refresh();

                      if (_root.now_play_table == 0) {

                                objChatDisplay.chat_display.htmlText += sys+e.attributes.Param+" is Leaving..."+newline;

                      }

                      objTableDisplay.removeName(e.attributes.Param);

                      if (trim(_root.rival) == trim(e.attributes.Param)) {

                                // 说明对手非正常退出,不跟你下了。

                                _root.no_play();

                      }

             } else {

……

这段程序处理的是下面的XML格式字符串

<USR PARAM="小东瓜" VALUE="ON" />

其中PARAM表示用户名,ON表示联机,OFF则表示退出。

在右边的用户文本显示框的下方是滚动按钮,如图7-14所示。

7-14

Ö           左边的是向上滚,程序如下:

    on (release) {

             prev();

    }

右边的是向下滚,程序如下:

    on (release) {

             next();

    }


将本文收藏到QQ书签与更多好友分享
[打 印]
[] [返回上一页] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 要10G免费网络硬盘的请进..
· 通过google 赶快来赚美金..
· 注册码大全十
· 头像-qq头像(qq新头像)4..
· 让你轻松架设FTP服务器1..
· 注册码大全三
· 梦幻背景图片7
· 卡通动物图片6
· 网页制作素材-按钮素材2..
· 让你轻松架设FTP服务器5..
· 风景图片8
· 注册码大全九
· 让你轻松架设FTP服务器2..
关注此文读者还看过
· Photoshop实例:制作MM照..
· 用MySQL和PHP创建XML
· 如何用Asp动态生成xml文..
· Flash 神奇遮罩之原理篇..
· 精美汽车图片9
· JAVA/JSP学习系列之四(O..
· Photoshop打造美女残缺美..
· 用PEAR来写你的下一个ph..
· 第九节:模板运用之子类..
· 用asp.net写的论坛程序-..
· 用 Fireworks MX 做齿轮..
· 雅虎推新版点唱机软件 整..
· 用Flash和FlashForge制作..
· 著名小说站云霄阁站长被..
· CSS实战:解决图片下面有..
· 彻底弄懂CSS盒子模式(DI..
相关文章
· Flashback Query 恢复误删除..
· 从基础开始深入学Flash AS3..
· 从基础开始深入学Flash AS3..
· 从基础开始深入学Flash AS3..
· 从基础开始深入学Flash AS3..
· 从基础开始深入学Flash AS3..
· 从基础开始深入Flash AS3教..
· 从基础开始深入Flash AS3教..
· 以Flash动画作网站引导页面..
· 四个原因让Silverlight无法..
· 用 jsfl 扩展你的 flash
· 让 Flash 广告具有记忆功能..
· 利用FLASH 8绘图功能..
· Flash动画技巧:动画..
· Flash DateChooser 组..
· Flash动画概述、影片..
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
粤ICP备05092265号