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

本章小结


好了,前面讲了这么多中、高级的应用,相信大家对于Flash的游戏、Actions编程应该有了更加深入的了解。其实游戏编程讲到一定程度的时候就变成了算法问题,这已经从某种意义上离开游戏本身,而游戏算法有些是有固定模式的,比如像五子棋算法。算法只有在实战中才可以学习与应用。

后面将讲述两个例子,一个是雷电类的战斗游戏,一个是联众性质的实时联网对战游戏。这两个游戏将偏重中高级的应用,对制作方面的某些细节不会讲得很细,其针对的读者群体也是专业程序员。如果看不懂,请学习其他相关的计算机编程知识。



 

 

 

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


5.2 游戏如何与后台通信


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

5.2.1 在Flash 5中有load外部变量的语句
loadVariablesNum与loadVariables具有完成从动画的外部或者后台程序中取得变量值的功能。实际上它先调用一个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变量的值,就停止等待结果,同时提示数据传送失败。

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

上面讲到的是在Flash 5或4中用到方法。在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文件名改一下再测试,发现这个事件仍然在同样时间里被调用了。通过这两点推测得出结论,这个事件函数可能是当数据传送有结果时就会被调用,而不管调用返回的是true或false。经过试验可以利用这个事件函数的返回值对上面的程序进行优化,这个返回值就是用来标志返回数据的正确与否的。把前面代码做一点修改,列出如下:

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效果来,在这里就不给出代码了,请大家自己动手试一试!


 

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