flash游戏编程基础教程 ,flash游戏制作教程及代码

现在是添加玩家和 NPC 的时候了。 为此,您需要编写一个 Car 类。 它将有一个 Move() 方法,玩家可以使用该方法控制他的汽车。 NPC 的移动将通过 Update() 完成,它只是更改 Y 坐标。

class Car{ constructor(image, x, y) { this.x = x; this.y = y; this.image = new Image(); this.image.src = image; } Update() { this.y = speed; } Move(v, d) { if(v == “x”) //X-axis movement { this.x = d; //Offset // if(this.x this.image.width * scale > canvas.width) { this.x -= d; } if(this.x canvas.height) { this.y -= d; } if(this.y < 0) { this.y = 0; } } }}

让我们创建第一个要检查的对象。

var objects = [ new Car(“images/car.png”, 15, 10)]; //An array of game objectsvar player = 0; //the number of the object controlled by the player

现在您需要向 Draw() 函数添加一个用于绘制汽车的命令。

for(var i = 0; i < objects.length; i ){ ctx.drawImage ( objects[i].image, //Render image 0, //Initial X position in the image 0, //Initial Y-axis position in the image objects[i].image.width, //Image width objects[i].image.height, //Image height objects[i].x, //X-axis position on the canvas objects[i].y, //Y-axis position on the canvas objects[i].image.width * scale, //The width of the image on the canvas multiplied by the scale objects[i].image.height * scale //The height of the image on the canvas multiplied by the scale );}

在按下键盘时调用的 KeyDown() 函数中,您需要添加对 Move() 方法的调用。

function KeyDown(e){ switch(e.keyCode) { case 37: //Left objects[player].Move(“x”, -speed); break; case 39: //Right objects[player].Move(“x”, speed); break; case 38: //Up objects[player].Move(“y”, -speed); break; case 40: //Down objects[player].Move(“y”, speed); break; case 27: //Esc if(timer == null) { Start(); } else { Stop(); } break; }}

现在您可以检查渲染和控制。

flash游戏编程基础教程 ,flash游戏制作教程及代码

碰撞时什么都没有发生,但这将在以后修复。 首先,您需要确保删除视图中丢失的对象。 这是为了避免堵塞 RAM。

在 Car 类中,我们添加值为 false 的字段 dead,然后在 Update() 方法中对其进行更改:

if(this.y > canvas.height 50){ this.dead = true;}

现在您需要更改游戏的更新功能,替换与对象关联的代码:

var hasDead = false; for(var i = 0; i < objects.length; i ){ if(i != player) { objects[i].Update(); if(objects[i].dead) { hasDead = true; } }} if(hasDead){ objects.shift();}

如果您不移除物体,当生成太多汽车时,游戏将开始降低计算机速度。

游戏物体碰撞

现在您可以开始实施碰撞。 为此,请为 Car 类编写一个方法 Collide(),它将检查汽车的坐标:

Collide(car){ var hit = false; if(this.y car.y) //If the objects are on the same line horizontally { if(this.x this.image.width * scale > car.x && this.x < car.x car.image.width * scale) //If the objects are on the same line vertically { hit = true; } } return hit;}

现在我们需要在 Update() 函数中添加碰撞检查:

var hit = false; for(var i = 0; i < objects.length; i ){ if(i != player) { hit = objects[player].Collide(objects[i]); if(hit) { alert(“You crashed!”); Stop(); break; } }}

这是游戏中的内容

flash游戏编程基础教程 ,flash游戏制作教程及代码

碰撞时可以添加任何逻辑:

打开动画;

添加效果;;

删除对象;

健康状况的改变,等等。

所有这些都由开发人员自行决定。

结论

这是一个非常简单的游戏,但足以了解 JS 如何处理图形以及一般如何创建游戏。 您可以在 GitHub 存储库中找到图像和完整的游戏代码。

使用画布非常适合处理图形:它提供了很棒的功能并且不会过多地加载浏览器。 我们现在也有一个可用的 WebGL 库(示例和用法),它可以为您提供大量的性能和 3D 工作(canvas 无法做到这一点)。

理解 WebGL 可能很困难——也许相反,许多人对尝试 Unity 引擎更感兴趣,它知道如何编译项目以在浏览器中运行它们。

 

本文来自投稿,不代表展天博客立场,如若转载,请注明出处:https://www.me900.com/284174.html

赞 (0)

相关推荐

  • alexa排,Alexa排名今日100

    以下是一篇关于“alexa排”的文章: 《关于“alexa排”的一些思考与探索》 一、“alexa排”的起源与背景 我觉得“alexa排”可能最初是由亚马逊公司推出的一个重要指标。它也许是为了评估网站或应用在互联网上的受欢迎程度和影响力而设立的。就好像在一个热闹的集市中,“alexa排”就像是给各个摊位标注的人气指数,能让人们快速了解哪些是更受关注的。 在互…

    2025-11-03
  • 犀牛角杯 你有一个犀牛角杯吗

    三千多年前的河南安阳,草木畅茂,野生犀牛沐浴在和煦的阳光下。这是一种古老而庞大的生灵,地球陆地上仅次于大象的大型食草动物。 “自古以来,犀角即被视为珍宝。传统的‘八宝’就包括犀角。”上海博物馆工艺研究部主任、研究馆员施远介绍,犀角雕刻艺术,充分显示了中国人物尽其用的造物思想和因形造境的艺术创造力。由于犀角材料的特殊性,传世文物存量极其稀少,历来受到收藏界的重…

    2023-06-06
  • tizen,荑怎么读

    以下是一篇关于“tizen”的文章: 《关于“tizen”的探索与思考》 一、tizen的起源与发展历程 我觉得tizen可能是三星公司推出的一个操作系统。它好像是在智能手机和智能设备领域逐渐崭露头角的。从一开始,也许它的目标就是为了提供一种不同于传统操作系统的选择,给用户带来新的体验。 在发展历程中,tizen经历了许多阶段。起初,它可能面临着诸多技术难题…

    2025-10-22
  • 有美一人 你最喜欢什么样的电影

    第1部:《肖申克的救赎》 最喜欢的电影,没有之一。如果对生活没有希望,即使拥有自由也只会让人觉得压抑恐怖。已经不知道看了多少遍,每当迷茫不安的时候,就会看它,然后告诉自己:希望是多么美好的东西,怀揣希望,坚持不懈,而后继续努力追求。 一句话总结:人生只有两个选择,要么忙着活着,要么赶着死去。 最爱台词: 有些鸟儿是注定不会被关在笼子里的,因为他们的每片羽毛都…

    2023-06-05
  • nvidia geforce 410m,Nvidia Geforce 410M:性能、特点及应用

    nvidia geforce 410m,Nvidia Geforce 410M:性能、特点及应用nvidia geforce 410m,Nvidia Geforce 410M:性能、特点及应用nvidia geforce 410m,Nvidia Geforce 410M:性能、特点及应用nvidia geforce 410m,Nvidia Geforce 410M:性能、特点及应用

    如果我没记错的话,2070是在去年的下旬公布,2060是在今年年初公布。对于所有人来说,我们今天的主角:NVIDIA GeForce RTX 2060 SUPER/2070 SUPER来的都太快了一点。不到一年就发布两款产品的升级款显然不符合市场规律,用户、厂商都会受到不同程度的影响。 但既然发了,还是在这个微妙的时间点(抢在AMD 5000系列之前发布),…

    2023-05-11 • 网络资讯
  • 刘五朵被谁牵走了 ,非诚勿扰女嘉宾资料大全

    刘五朵被谁牵走了 ,非诚勿扰女嘉宾资料大全刘五朵被谁牵走了 ,非诚勿扰女嘉宾资料大全刘五朵被谁牵走了 ,非诚勿扰女嘉宾资料大全刘五朵被谁牵走了 ,非诚勿扰女嘉宾资料大全

    非诚勿扰是2010年1月15日中国大陆江苏卫视制作的一档婚恋交友真人秀节目,每场台上都有24位女嘉宾。说真的,非诚勿扰真正牵手的没几个,真正步入婚姻殿堂的更少之又少。关于非诚勿扰女嘉宾真的有太多了,一一列举女嘉宾资料我觉得也没这个必要,下面记录一些非诚勿扰比较著名的女嘉宾个人资料及轰动事件: 非诚勿扰女嘉宾骆琦 王佳个人资料:2011年33岁的西安女子王佳出…

    2023-06-02 • 网络资讯
  • 手机价钱,手机价钱魅族

    以下是一篇关于“手机价钱”的文章: 《手机价钱:从入门到高端的探索之旅》 一、手机价钱的基本构成 我觉得手机价钱的构成可能是一个比较复杂的过程。它也许不仅仅是零部件的简单累加,还包括了研发成本、品牌溢价、市场营销等多个方面。就好像建造一座房子,不仅需要砖块、水泥等基础材料,还需要设计师的创意、施工队的技艺以及广告宣传的推广。 从零部件来看,手机的处理器、屏幕…

    2025-11-12
  • f5负载均衡配置,f5负载均衡配置syslog日志

    《f5负载均衡配置:从入门到实践》 一、负载均衡的概念及作用 负载均衡,简单来说,就是将网络流量分配到多个服务器上,以实现服务器资源的合理利用和系统的高可用性。就好像是一个交通指挥中心,将来来往往的车辆(网络流量)合理地分配到不同的道路(服务器)上,避免某一条道路过于拥堵(某一台服务器负载过高)。 在现代的网络环境中,随着业务的不断发展和用户量的增加,单台服…

    2025-10-01
  • 桌面图标不能删除,桌面图标无法删除的解决办法

    《桌面图标不能删除之探究》 一、现象描述在日常使用电脑的过程中,我们或许会遇到这样一个令人困惑的问题:桌面图标竟然不能被删除。这似乎与我们对电脑操作的常规认知不太相符,毕竟删除不需要的文件或图标是我们在电脑使用中经常进行的操作之一。那么,为什么会出现桌面图标不能删除的情况呢?这其中到底隐藏着怎样的奥秘呢? 二、可能的原因分析1.系统文件或重要程序的图标也许这…

    2025-09-03
  • 4500急招一位接送小孩阿姨怎么霸屏了

    随着经济条件变好,现在家政和保姆服务也越来越多,毕竟很多家庭条件不算太差的人日常公务都是比较繁忙的,所以,就会考虑家政和保姆服务。 这是非常正常的事情。 但家政和保姆的价格因为地域的差别,酬劳也相差较大,比如北山广深这些一线城市,消费力高,生活节奏快,那么保姆服务的月薪基本都在万元以上,如果是住家或全方位保姆,那么价格自然也会更高。 如果是其他三四线城市,4…

    2020-10-15
  • 花生壳无法登陆,花生壳无法登陆解决方案

    网盘关了,NAS火了 近期国内网盘服务商纷纷终止为用户提供个人云存储服务,许多用户将目光转移到了个人NAS上。购置并设置好NAS之后,就有了自己专属的私有云储存空间,隐私得到进一步保障,还可以备份、分享资料,下下下,更有各种多媒体服务。 主流NAS基础搭建配置教程: http://service.oray.com/question/3554.html(来自花…

    2023-05-08
  • qq临时会话代码 你的QQ号码是什么

    当客户点击客服进行对话的时候,提示:”QQ在线状态”服务尚未启用,您需要添加对方为好友才能与其进行会话,怎么回事? 然后点击左侧的“设置”,如果您的QQ没有开启临时会话功能,会出现下图提示: 点击“立即免费开通”,即可完成开启工作。 最后在QQ设置面板里面开启临时会话功能 说明你的QQ是暂时无法使用正常接待功能,只能付费去开通企业QQ才能正常使用。不过这有技…

    2023-06-05