收藏九域天地
九域天地友情链接
九域天地留言本
九域天地站点地图
      西安九域天地设计咨询网-VI/CI标志设计免费教程|平面广告设计教学文章|西安展示设计教程下载|室内装饰设计教程下载|多媒体动画制作在线教程文章|西安网站设计制作教程文章|招贴海报论坛教程|西安软件包装设计教程文章|西安展厅效果图设计教程|西安服装设计教程文章|西安公司标志设计|中国西安设计
   
西安九域天地设计咨询网-VI/CI标志设计免费教程|平面广告设计教学文章|西安展示设计教程下载|室内装饰设计教程下载|多媒体动画制作在线教程文章|西安网站设计制作教程文章|招贴海报论坛教程|西安软件包装设计教程文章|西安展厅效果图设计教程|西安服装设计教程文章|西安公司标志设计|中国西安设计
    当前位置:首页->设计相关->教程文章->多媒体设计文章    
   
 
西安九域天地设计咨询网-VI/CI标志设计免费教程|平面广告设计教学文章|西安展示设计教程下载|室内装饰设计教程下载|多媒体动画制作在线教程文章|西安网站设计制作教程文章|招贴海报论坛教程|西安软件包装设计教程文章|西安展厅效果图设计教程|西安服装设计教程文章|西安公司标志设计|中国西安设计
九域天地设计新闻
九域天地动向
设计相关文章
 
 
 
 
 
 
标志VI设计教程
Flash MX 编程深层次应用-网络连线游戏(2)

7.2 游戏区(1)


游戏区其实就相当于一个游戏棋室的功能,从图7-4中可以看出屏幕上放了一些游戏桌,桌的形状如图7-5所示,用简单的线条与不同色的棋子来标志一个棋盘。在棋盘的下面有一个编号,用来区别不同的棋局。

 

 

图7-5

7.2.1 棋手的坐下与起立
既然有棋桌,那么棋手就可以坐下与起立,而且把左边与右边分开处理,左边的变量名叫player_left,右边的变量名叫player_right。如果有人坐在左边就在左边显示一个小人,表示已经有人坐了,同理如果有人坐在右边就显示另一个小人。两个小人的样式如图7-6所示。

 

图7-6

1.检测玩家
首先先让这两个小人全部隐藏,然后在检查到名字变量不为空时就显示小人。

左边小人的程序
onClipEvent (enterFrame) {

if(_parent.trim(_parent.player_left)!=""&&_parent.trim(_parent.player_left)!=null) {

this.gotoAndStop (2);

} else {

this.gotoAndStop (1);

}

}

右边小人的程序
onClipEvent (enterFrame) {

if (_parent.trim(_parent.player_right)!=""&& _parent.trim(_parent.player_right)!=null) {

this.gotoAndStop (2);

} else {

this.gotoAndStop (1);

}

}

一张棋盘在源文件中的排列如图7-7所示。

 

图7-7

左边的那个文本框是player_left,右边的是player_right,中间的是table_no。虽然两个小人平时并不显示出来,但是却得让它们在相应的位置有按钮可以按,这样才可以保证玩家可以方便地坐在棋盘边。于是制作了一个仅有激活区域的空白按钮,也就是读者所看到的浅色的小方块,这个小方块仅仅显示出激活区域,在实际运行时不会显示。当然,这两个按钮还得有它们的程序。

左侧按钮
左边按钮的代码:

on (release) {

if (player_left ==_root.nickname || trim(player_left) == "" || player_left == null) {

var chatXML;

var m_Message;

chatXML = new XML();

//求出我在100盘棋中正处于哪一盘

var place = Number(this._name.substring(6));

place += _parent.table_begin-1;

sit_table = "Table_"+place;

//向后台发出一个坐下指令

m_Message = chatXML.createElement("CMD");

m_Message.attributes.VALUE = "SIT";

if (player_left == _root.nickname) {

// 如果已经坐在该位置的话,就意味着自己要起立

_root.player_left[place] = player_left="";

_root.myself.PlayStatus = "StandUp";

//起立用stand_up表示

m_Message.attributes.PARAM = place+" stand_up "+_root.nickname;

} else if ((trim(player_left) == "" || player_left == null) && _root.myself.PlayStatus != "SitDown") {

_root.player_left[place] = player_left=_root.nickname;

_root.myself.PlayStatus = "SitDown";

_root.now_sit_table = place;

//如果是坐下就用left表示坐在左边,right坐在右边

m_Message.attributes.PARAM = place+" left "+player_left;

}

//不管自己是坐下还是起立,都要发条信息给后台,并由后台进行广播

chatXML.appendChild(m_Message);

trace (chatXML.toString());

// send it!!!

if (_root.now_sit_table == place && player_right != _root.nickname ) {

// 表示就坐在当前台

_root.chatSocket.send(chatXML);

//先清空对家

_root.rival = "";

if (trim(player_left) != "" && player_left != null && trim(player_right) != "" && player_right != null) {

//如果对家也坐了人就开始下棋了,然后初始化变量

//对手名

_root.rival = player_right;

//谁先下,左边的红棋先下

_root.i_run = true;

//谁拿什么棋,我现在在左边是拿红棋,对手拿右边的蓝棋

_root.my_logo = _root.First_play;

_root.your_logo = _root.Second_play;

//表示玩家正坐在哪张台

_root.now_play_table = place;

//开始与对家下棋

_root.begin_play(_root.nickname,_root.rival);

_root.gotoAndPlay("begin_play");

}

} else {

// 表示自己已经坐在其他台,提示玩家要在其他台先起立

disp_left.gotoAndPlay("display");

}

}

}

右侧按钮
右边按钮的程序与左边理论上是一样的,只是把left换成了right,然后把布尔变量对换。为了大家看得更加清楚,特列出程序如下:

on (release){

if (player_right == _root.nickname || trim(player_right) == "" || player_right == null) {

var chatXML;

var m_Message;

var place = Number(this._name.substring(6));

place += _parent.table_begin-1;

sit_table = "Table_"+place;

chatXML = new XML();

m_Message = chatXML.createElement("CMD");

m_Message.attributes.VALUE = "SIT";

if (player_right == _root.nickname) {

_root.player_right[place] = player_right="";

_root.myself.PlayStatus = "StandUp";

m_Message.attributes.PARAM = place+" stand_up "+_root.nickname;

} else if ((trim(player_right) == "" || player_right == null) && _root.myself.PlayStatus != "SitDown") {

_root.player_right[place] = player_right=_root.nickname;

_root.myself.PlayStatus = "SitDown";

_root.now_sit_table = place;

m_Message.attributes.PARAM = place+" right "+player_right;

}

chatXML.appendChild(m_Message);

trace (chatXML.toString());

// send it!!!

if (_root.now_sit_table == place && player_left != _root.nickname) {

_root.chatSocket.send(chatXML);

_root.rival = "";

if (trim(player_left) != "" && player_left != null && trim(player_right) != "" && player_right != null) {

//如果对家也坐了人就开始下棋,然后初始化变量

//对手名

_root.rival = player_left;

//右边的后走

_root.i_run = false;

//我在右边拿蓝棋,对手在左边拿红棋

_root.my_logo = _root.Second_play;

_root.your_logo = _root.First_play;

_root.now_play_table = place;

//开始下棋

_root.begin_play(_root.nickname,_root.rival);

_root.gotoAndPlay("begin_play");

}

} else {

// 表示自己坐在其他台,提示玩家

disp_right.gotoAndPlay("display");

}

}

}

后台收到的内容
<CMD PARAM="6 stand_up dongua" VALUE="SIT" />

这里的value其实分成三个部分,每个部分之间用空格分开。

第一个是数字,表示当前的棋盘号。

第二个是状态,表示如下:

? stand_up表示起立
? left表示坐在棋盘左边
? right表示坐在棋盘右边
第三个则是用户的名称,后台根据这三项内容进行相应的处理。

处理完之后结果发回给用户:

<SIT VALUE="6:stand_up:dongua" />

也是分成三个部分,只是其分隔符改成了冒号。


 

 第 016 篇  首篇 上一篇 下一篇 返回 
 
 
 
 
  西安九域天地设计咨询网-平面广告设计、VI/CI设计、 室内装饰设计、多媒体动画制作、网站设计制作、招贴海报设计、软件包装设计、展厅效果图设计、公司标志设计 中国西安设计  
九域天地自助链接   九域天地友情链接   九域天地创作团队   九域天地人才招聘   九域天地联系方式   九域天地在线咨询
西安九域天地设计咨询网-VI/CI标志设计免费教程|平面广告设计教学文章|西安展示设计教程下载|室内装饰设计教程下载|多媒体动画制作在线教程文章|西安网站设计制作教程文章|招贴海报论坛教程|西安软件包装设计教程文章|西安展厅效果图设计教程|西安服装设计教程文章|西安公司标志设计|中国西安设计
 
九域天地联系电话   写信给九域天地
 
多媒体设计教程 网站设计教程 平面广告设计教程 环境装饰设计教程 界面创意设计教程