中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 图形图象 > 网页设计 > Flash
Flash MX 编程深层次应用-网络连线游戏(3)
作者:未知 时间:2005-05-28 12:12 出处:ChinaZ.com 责编:chinaitpower
              摘要:Flash MX 编程深层次应用-网络连线游戏(3)
7.2 游戏区(2)

    

下面是对应的SIT部分的Java代码:

if(cmd.equals(this.cmd_SIT)) {

    if(param != null) {

        param = param.trim();

        if( param.indexOf(" ") != -1) {

            String desk_name = param.substring(0, param.indexOf(" "));

            param = param.substring(param.indexOf(" "));

            param = param.trim();

            String chessman_status = param.substring(0,param.indexOf(" "));

            String  player_name = param.substring(param.indexOf(" "));

            player_name = player_name.trim();

            chessman_status = chessman_status.trim();

            user.deskname = desk_name;

          user.place = chessman_status;

            if (chessman_status.equals("stand_up")) {

               user.deskname = null;

               user.place = null;

               user.play_status = null;

            }

       // 由于是广播,所以自己也会收到一个坐下的命令,所以自己就不发给自己了

            user.manager.notifyAll(packMsg(this.m_SIT, desk_name+":" + chessman_status + ":" + player_name,"" ));

        }

    }

}

服务器发一条信息,是如何收到,然后如何动作的呢?请看下面的部分Flash代码:

function onXML_Receive(x) {

    if (x == null) {

             return;

    }

    var e = x.firstChild;

    if (e == null) {

             return;

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

             trace("----sit----");

             _root.sit_down(e.attributes.Value);

    }

……

这里的onXML_Receive程序就是前面说到的接收信息的主处理程序。很明显,这个在收到<SIT VALUE="6:stand_up:dongua" />串后,就会把它分解成一个结构型的内容,节点名就叫:SIT,其属性值e.attributes.Value等于"6:stand_up:dongua",请看这里调用的坐下的子程序:

function sit_down(str) {

    var place = 0, pre, now;

    var player = new Array(3);

   //把这个字符串分成三个部分

    player = str.split(":");

   //如果是自己收到自己坐下的信息就不做任何处理

    if (player[2] != _root.nickname) {

             set_sit(player);

             // 如果自己坐在他的对面就开始游戏,定为左边先走

       if (player[1] == "left" && _root.player_right[player[0]] == _root.nickname) {

                      // 表示自己坐在右边,拿蓝棋,后走

                      _root.i_run = false;

                      _root.my_logo = _root.Second_play;

                      _root.your_logo = _root.First_play;

                      _root.rival = player[2];

                      _root.now_play_table = Number(player[0]);

           //进入开始下棋的阶段

                      _root.init_play();

                      _root.gotoAndPlay("begin_play");

             }

      if (player[1] == "right" && _root.player_left[player[0]] == _root.nickname) {

                      // 表示自己坐在左边,拿红棋,先走

                      _root.i_run = true;

                      _root.my_logo = _root.First_play;

                      _root.your_logo = _root.Second_play;

                      _root.rival = player[2];

                      _root.now_play_table = Number(player[0]);

            //进入开始下棋的阶段

                      _root.init_play();

                      _root.gotoAndPlay("begin_play");

             }

    }

}

function set_sit(arr) {

    if (arr[0] != "null") {

             var place = Number(arr[0]);

             var obj_place = place-_root.objTableDisplay.table_begin+1;

       //如果起立就清空对应棋盘对应位置的名字

             if (arr[1] == "stand_up") {

                      if (_root.player_left[place] == arr[2]) {

                                _root.objTableDisplay["Table_"+obj_place].player_left = "";

                                _root.player_left[place] = "";

                      } else {

                                _root.objTableDisplay["Table_"+obj_place].player_right = "";

                                _root.player_right[place] = "";

                      }

             }

       //如果坐左边就修改对应棋盘左边的内容

             if (arr[1] == "left") {

                      _root.objTableDisplay["Table_"+obj_place].player_left = arr[2];

                      _root.player_left[place] = arr[2];

             }

       //如果坐右边就修改对应棋盘右边的内容

             if (arr[1] == "right") {

                      _root.objTableDisplay["Table_"+obj_place].player_right = arr[2];

                      _root.player_right[place] = arr[2];

             }

    }

}

你是不是有点看晕了?没有办法,编程序就是这样,一定要弄清楚哪些是Java代码,哪些是Flash代码,这两种代码看上去很相像。或者你会问为什么要一会用Java代码一会用Flash代码,笔者认为只有这样讲读者才会弄明白游戏到底是如何运行的。如果分开讲的话,可能会更加糊涂!好了,言归正传,下面就来说明上面的代码吧。

上面的代码是游戏坐下的程序,sit_down程序的核心分成下面几个部分:

Ö           如果收到的是我坐下的信息就不做任何处理。
Ö           如果我不是坐在刚才这个人的对面,那么仅仅需要显示刚才这个人的位置与名字,并做相应的坐下或者起立的操作。
Ö           这里留下一个伏笔,就是在开始下棋的时候要先初始化一下,然后跳转到begin_play帧,也就是下面的这两条语句,这个内容会在后面讲到。

_root.init_play();

_root.gotoAndPlay("begin_play");

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有