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)

相关推荐

  • 免费申请网号,如何免费申请网号:攻略与步骤指南

    01 请问什么是携号转网? 答 您好,携号转网是指在中华人民共和国境内(不包括港澳台地区),在同一本地电话网范围内,蜂窝移动电话用户变更签约的电信业务经营者而用户号码保持不变的一项服务,因此不可以跨省、地市携转。比如:宁波联通/电信号码可以转为宁波移动号码,但宁波移动号码不能转为杭州电信/联通号码。 02 办理携号转网要收费吗? 答 您好!携号转网是免费办理…

    网络资讯 2023-05-21
  • 烽火算法,烽火通信云计算中心

    以下是一篇关于“烽火算法”的文章: 一、烽火算法的起源与背景 我觉得烽火算法可能是随着互联网的发展而逐渐形成的一种机制。在早期的互联网世界中,信息的传播和搜索可能不像现在这样高效和精准。那时,也许就像古代烽火台传递信息一样,搜索引擎需要一种方式来快速筛选和整理海量的网页内容。 就好像我们在一个巨大的图书馆里找一本书,没有好的分类和检索方法,就会像无头苍蝇一样…

    2025-10-31
  • mshtml,mshtml.tlb

    以下是一篇关于“mshtml”的文章: 一、mshtml的基本概念与起源 mshtml可能是微软公司开发的一个与HTML相关的技术组件。我觉得它好像是在早期互联网发展阶段就逐渐形成的,也许是为了更好地支持在Windows系统上对网页内容的处理和展示。它就像是网页世界中的一个幕后工作者,默默地为我们呈现出那些丰富多彩的网页界面。 在互联网的早期,网页的呈现方式…

    2025-11-08
  • 无法安装字体,显示字体无效怎么办

    《关于无法安装字体问题的深入探讨》 一、字体安装的基本原理也许我们可以这样理解,字体就像是一个个独特的字符“造型师”,它们为我们的文字赋予了各种风格和美感。当我们在电脑或其他设备上安装字体时,就像是把这些“造型师”请进了我们的“文字工作室”,让它们随时准备为我们的文字进行“打扮”。 在操作系统中,有一个专门的字体管理系统,它就像是一个“字体仓库”,负责存储和…

    网络资讯 2025-09-03
  • 地心引力好看吗 ,**宇航局创始人简介

    《地心引力》(Gravity)上映之后曾赢得了全球观众的一致好评斩获了多个奖项,其全球票房超过7亿美元,这意味着阿方索·卡隆执导的这部科幻片是非常成功的。然而据外媒报道,近日**宇航局(NASA)的一位科学家表示,其中一部分情节会给观众留下错误的印象。 在接受英国广播公司(BBC)采访时,NASA科学家评选出他们认为的最好和最差的太空电影,《地心引力》一再被…

    2023-06-06
  • 面膜私信如何选择最适合自己的

    文|小咔 Hello~ 宝儿们,乃们的小咔上线啦! 这几天后台私信有好多让小咔说说自己用的很好的面膜,但素小咔又不在了解肤质的情况下不会给太多推荐的,不过面膜的话相对来说是个例外了,基本上的特点是符合很多人的使用感受的,没有太多的反馈,但是就在前几天小咔不是吐槽了那个OLAY的红片面膜了么, 吐槽它的那个膜布真的太厚了又非常的闷 所以今天小咔大致说一下面膜如…

    网络资讯 2023-06-07
  • 母亲节活动主题 ,最美的鲜花送妈妈

    5月8日,在山东青岛西海岸新区隐珠街道黄土庄村,妇女们参加“最美鲜花送给妈妈”活动,学习插花。 新华社发(王培珂 摄) 5月9日,在湖南省永州市道县第六中学,学生参加“中华孝道”手语表演,表达对母亲的爱意。 新华社发(何红福 摄) 5月9日,江苏省连云港市海州湾街道大港社区的中老年妇女参加“巧手妈妈剪纸”活动。 新华社发(王健民 摄) 5月9日,在安徽省阜阳…

    2023-06-02 网络资讯
  • 销售手机,买手机:最新款手机报价比较

    #头条创作挑战赛# 近日,根据多家科技媒体的消息,性能榜、好评榜之后,国内手机评测机构安兔兔随之公布了性价比榜单。按照介绍,2023年3月份之后,上半年要发布的新机就少很多了,旗舰手机应该也差不多都已经登场,接下来就看哪款手机的价格能更稳定和优惠了,今年下半年是没有骁龙8 Gen2的,所以大家在购机选择上也方便很多,但是接下来还要看看联发科有哪些新U出现,毕…

    网络资讯 2023-05-19
  • ipodtouch4 iPod Touch 4有多大内存,oppo官网reno10参数

    在今天下午2点,OPPO Reno10标准版正式发布。8GB 256GB售价2499元,12GB 256GB售价2799元,12GB 512GB售价2999元。 Reno10采用了最新的ColorOS 13.1操作系统,并在算法层面进行了优化。这个升级后的操作系统为用户提供全场景闪电启动功能,无论是应用还是游戏,都能够做到随用随开。同时,结合超级内存加速等一…

    2023-06-01
  • 免费php空间申请,2020免费php空间

    《免费php空间申请:从入门到精通》 一、什么是免费php空间? 也许你在学习php编程的过程中,或者想要搭建一个简单的个人网站时,会接触到免费php空间这个概念。它就像是一个在线的服务器空间,你可以将你的php代码和相关文件存储在上面,并让它们在互联网上运行。 我觉得可以把它类比为一个你自己的小房间,只不过这个房间是在互联网的世界里。你可以在这个房间里放置…

    网络资讯 2025-12-05
  • 新武林外传 你知道新武林外传的故事吗

    新武林外传 游戏盒子 《武林外传》手游测评 新武林外传手游想知道盗圣是怎么输的吗?新武林外传推出蹴鞠比赛,牛年开启新气象!游戏讲述了武林白道人士与黑道人士相互争斗的故事,玩家也可扮演枪豪、剑客、术士、医师、神机等职业,来维护武林江湖的和平

    网络资讯 2023-06-05
  • 木头鱼韩语在线翻译,韩语木头人怎么说语音

    《木头鱼韩语在线翻译:探索与思考》 在当今数字化的时代,语言翻译工具变得越来越重要。其中,木头鱼韩语在线翻译作为一款在线翻译工具,引起了人们的广泛关注。它究竟是如何工作的?它的翻译质量如何?它在实际应用中又有哪些优缺点呢?让我们一起来深入探讨一下。 一、木头鱼韩语在线翻译的工作原理 我觉得木头鱼韩语在线翻译的工作原理可能类似于一个大型的语言数据库。它收集了大…

    2025-07-30