中国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 编程深层次应用-Flash射击游戏(7)
作者:未知 时间:2005-05-27 12:12 出处:ChinaZ.com 责编:chinaitpower
              摘要:Flash MX 编程深层次应用-Flash射击游戏(7)
6.3 游戏后台通信(1)

    

6.3.1  游戏积分排行榜

一个完整的游戏都有一个排行榜,本游戏也不例外。排行榜的内容实际上就是将玩家的得分及姓名等相应内容向后台程序发送,然后由后台程序进行处理,再将处理完的结果返回Flash中。下面先看看游戏的前台部分,如图6-22所示。

6-22

Ö           1帧:取得积分榜

程序如下:

_root.input_name._visible = false;

_root.now_over._visible = true;

stopDrag();

Mouse.show();

stopAllSounds();

//这里的url设为本地的,可以根据需要改正真实的值

url = "http://localhost/";

_root.now_url = url+"./score.asp?buf="+getTimer();

_root.reply_time = 15;

dongua_load_var = new LoadVars();

dongua_load_var.sendAndLoad(_root.now_url, dongua_load_var, "POST");

function time_out() {

    clearInterval(get_first);

    gotoAndPlay("disp_all_fen");

    removeMovieClip(_root["dongua"]);

}

get_first = setInterval(time_out, _root.reply_time*1000);

_root.createEmptyMovieClip("dongua", 1);

_root.dongua.onEnterFrame = function() {

    if (dongua_load_var.loaded) {

             //如果已经有返回就不再计时

             clearInterval(get_first);

             _root.now_over._visible = false;

             //如果收到返回值,就检查是否比最小值大

             if (Number(_root.dongua_load_var.lowest_score)<_root.your_score) {

                      // 得分高于最低分,显示输入框,要求输入用户名

                      _root.input_name._visible = true;

             } else {

                      gotoAndPlay("disp_all_fen");

             }

             removeMovieClip(_root["dongua"]);

             this.stop();

    }

};

stop();

这里的input_name是一个姓名输入窗口,只有当我的得分高于最低分时才出现。

Ö           2帧:等待数据传递

其标号是wait_lowest,主要用于等待后台传数据过来,程序如下:

stopDrag();

Mouse.show();

Ö           3帧:与第2帧一起形成等待:

gotoAndPlay("wait_lowest");

Ö           4帧:标号是disp_all_fen,将排行榜中的得分显示在屏幕上

程序如下:

stopDrag();

Mouse.show();

//显示排名名单

for (i=0; i<=9; i++) {

    _root["name"+i] = _root.dongua_load_var["name"+i];

    _root["score"+i] = _root.dongua_load_var["score"+i];

}

if (_root.dongua_load_var.loaded) {

    _root.now_over._visible = false;

} else {

    stopAllSounds();

   //跳到游戏的最开始位置

    gotoAndPlay("game_menu", 1);

}

removeMovieClip(_root["dongua"]);

//显示排行榜的时候就不要再显示用户名输入框

_root.input_name._visible = false;

Ö           5帧:延迟程序

//显示排行榜10秒钟

stopDrag();

Mouse.show();

begin = getTimer();

reply_time = 10;

Ö           6帧:标号是fen_disp_loop,让积分显示保留秒

程序如下:

stopDrag();

Mouse.show();

now = getTimer();

if (now-begin>1000*reply_time) {

    stopAllSounds ();

    gotoAndPlay ("game_menu", 1);

}

Ö           7帧:与第6帧一起完成画面停留10

gotoAndPlay("fen_disp_loop");

Ö           10帧:标号是process

程序如下:

stopDrag();

Mouse.show();

begin = getTimer();

reply_time = 15;

Ö           11帧:标号是change_paiming

程序如下:

stopDrag();

Mouse.show();

_root.now_over._visible = false;

if (_root.dongua_load_var.loaded) {

  tellTarget (_root) {

    gotoAndPlay ("gameover", "disp_all_fen");

  }

}

now = getTimer();

if (now-begin>1000*reply_time) {

    _root.input_name.gotoAndStop(1);

    gotoAndPlay ("game_menu", 1);

}

Ö           12帧:与第11帧形成循环

gotoAndPlay("change_paiming");

其实第10帧到12帧的内容是当用户在输入用户名之后,发出一个修改后台排行榜积分的请求,于是程序便需要在这里等待结果了。

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