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

Flash MX 编程深层次应用-复杂游戏(2)

作者:未知  来源:http://edu.chinaz.com  发布时间:2005-7-18 23:00:56  发布人:acx

减小字体 增大字体

5.2 游戏如何与后台通信

    

在游戏中记录下玩家的得分,然后将得分排序是经常的事情,这就涉及到Flash游戏与后台之间的通信问题了。Flash能与任何后台语言进行通信,比如ASPPHPJSPPerlJava等。这里介绍一下FlashPHPASP通信的方法。

5.2.1  Flash 5中有load外部变量的语句

loadVariablesNumloadVariables具有完成从动画的外部或者后台程序中取得变量值的功能。实际上它先调用一个URL,这个URL如果有输出,就把输出的内容传到Flash中。请看下面PHP语言的例子:

_root.now_url = url+"dispscore.php?buf="+getTimer();

loadVariablesNum (now_url, 0, "POST");

dispscore.php程序内容:

<?

  $disp_score = "myscore=500";

  $disp_name = "name=dongua";

  echo "$disp_score$disp_name&score_ret=1";

?>

这里就返回了一个得分与用户名称,同时也返回了一个score_ret=1。这个变量的作用就是标志所有要返回的内容已经全部返回结束,在Flash中只需检查它就知道数据有没有返回;GetTimer()的作用是为了调试方便,因为IE有缓存,如果不每次再加一个随机内容,就有可能直接从缓存中读取数据了。请再看ASP的如下代码。

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

loadVariablesNum (now_url, 0, "POST");

score.asp程序代码如下:

<%

   response.write "name=dongua"

    response.write "&my_score=400”

    response.write "&score_ret=1"

%>

这仅仅是一种理论上的代码,实际操作过程中还要有循环等待时间,以便程序有足够的时间来与后台交换数据,一般来说15s就足够了。当然,如果网速快,数据量少,时间会短一些。因此在编程的时候,要设定一个最大空等待时间。如果超过这个时间没有检查到score_ret变量的值,就停止等待结果,同时提示数据传送失败。

懂编程的人可以从这两种编程语言的返回中看出,返回数据的语句就相当于用后台编程语言在屏幕上显示内容,根本不用其他的特定语句!也就是说如果用PerlJSPFlash通信,只需用在屏幕上显示内容的语句便可。

上面讲到的是在Flash 54中用到方法。在MX中又增加了新的方法,那就是LoadVars对象。MX中加入这个对象,其意义是显而易见的,就是让代码更简单,更易读,更便于控制!

请看下面的程序:

dongua_load_var = new LoadVars();

//调用上面的score.asp程序

dongua_load_var.sendAndLoad("http://localhost//score.asp?buf="+getTimer(), dongua_load_var, "POST");

dongua_load_var.onLoad = function() {

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

};

_root.createEmptyMovieClip("dongua", 1);

_root.dongua.onEnterFrame = function() {

    if (dongua_load_var.loaded) {

             trace(dongua_load_var.name);

             trace(dongua_load_var.my_score);

             trace(dongua_load_var.score_ret);

             trace(dongua_load_var.contentType);     

             removeMovieClip("dongua");

    } else {

             trace("请等待.....");

    }

};

输出结果如下:

请等待.....

请等待.....

请等待.....

请等待.....

请等待.....

请等待.....

请等待.....

------------

dongua

400

1

application/x-www-form-urlencoded

从这里很明显可以看出,通过实例化一个loadVars变量可以自动取得后台的变量名与变量值。这个方法比以前版本方便多了!上面程序中还用到了loadVars对象中提供的检查是否已经load完成的变量loaded。这个变量非常有用,编程时再也不用像以前那样通过从后台传一个变量来检查了。而这个对象的另一个事件onLoad则可以做成一个事件驱动的函数形式。当然了,从测试的结果来看好像是在成功的时候调用的,将asp文件名改一下再测试,发现这个事件仍然在同样时间里被调用了。通过这两点推测得出结论,这个事件函数可能是当数据传送有结果时就会被调用,而不管调用返回的是truefalse。经过试验可以利用这个事件函数的返回值对上面的程序进行优化,这个返回值就是用来标志返回数据的正确与否的。把前面代码做一点修改,列出如下:

dongua_load_var = new LoadVars();

//调用上面的score.asp程序

dongua_load_var.sendAndLoad("http://localhost//score.asp?buf="+getTimer(), dongua_load_var, "POST");

dongua_load_var.onLoad = function(success_flag) {

    if (success_flag) {

trace("返回值正确,取相应的数据进行处理")

             trace(dongua_load_var.name);

             trace(dongua_load_var.my_score);

             trace(dongua_load_var.score_ret);

             trace(dongua_load_var.contentType);     

    } else {

trace("返回值错误,程序无需再等待")

             }

    removeMovieClip("dongua");

};

_root.createEmptyMovieClip("dongua", 1);

_root.dongua.onEnterFrame = function() {

    trace("请等待.....");

};

这段程序跟前面的相比只是将相应的程序摆放到不同的函数中而已,执行的情况是只要后台程序一有返回值,等待就结束,因此它的响应速度得到明显提高。

loadVars对象中还有两个非常重要的方法函数就是MyLoadVars.getBytesLoaded()MyLoadVars.getBytesTotal()。它们可以取得已经通信的数据字节数,这对于取XML的文档是非常实用的。可以通过这两个方法的配合做出一个通信过程的loading效果来,在这里就不给出代码了,请大家自己动手试一试!


将本文收藏到QQ书签与更多好友分享
[打 印]
[] [返回上一页] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 要10G免费网络硬盘的请进..
· 通过google 赶快来赚美金..
· 注册码大全十
· 头像-qq头像(qq新头像)4..
· 注册码大全三
· 让你轻松架设FTP服务器1..
· 梦幻背景图片7
· 卡通动物图片6
· 风景图片8
· 网页制作素材-按钮素材2..
· 注册码大全九
· 让你轻松架设FTP服务器5..
· 50MB免费空间 FTP PHP M..
关注此文读者还看过
· 客户端脚本验证码总结
· 互补色简单计算法
· javascript动态装入XML数..
· ASP内建对象Request
· 008.net/解析/动态域名/..
· 如何在PHP中使用Oracle数..
· Ad Rotator 组件参考(二..
· ASP编程入门进阶(九):..
· 为Html 的Select 加一个..
· DateDiff函数详解
· PHP-Push技术实现刷新功..
· 3DsMAX实例制作:三维玻..
· Vinton G. Cerf:睡觉就..
· Flash绘制精致矢量图:斑..
· ASP注入漏洞全接触(4)
· 问答:查询分析器不能单..
相关文章
· 四个原因让Silverlight无法..
· 用 jsfl 扩展你的 flash
· 让 Flash 广告具有记忆功能..
· 利用FLASH 8绘图功能..
· Flash动画技巧:动画..
· Flash DateChooser 组..
· Flash动画概述、影片..
· Flash背景透明和层次问题
· Flash电子杂志常用滚动区域..
· 在Mozilla和Firefox浏览器中..
· 符合web标准的flash调用方法..
· 教你如何去掉网页上的..
· Dreamweaver也能轻松制作Fl..
· 上海专业web开发团队招聘高..
· 如何进行FLASH网址验证防下..
· 实例技巧:Flash与HTML实现交..
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
免责申明:中国建站之家(www.jz123.cn)上的所有提供下载的软件和资源
均来源于网络,为软件或程序作者提供和网友推荐收集整理而来,仅供学习
和研究使用。如有侵犯你的版权,请立即联系我们,本站将在3个工作日内删除。
粤ICP备05092265号