HTML5面向对象的游戏开发简单实例总结

在阅读一本HTML5游戏开发相关书籍时发现一个很好的例子,通过这个例子可以对面向对象的开发进行更深入的理解。这个对象要实现的是:将一个CSS sprite中的图像绘制到canvas中。首先创建一个SpriteSheet对象,代码如下:

var SpriteSheet = new function(){
	this.map = { };
	this.load = function(spriteData,callback){
		this.image = new Image();
		this.image.onload = callback;
		this.image.src = "images/sprites.png";
	};
	this.draw = function(ctx,sprite,x,y,frame){
		var s = this.map[sprite];
		if (!frame) {
			frame = 0;
		};
		ctx.drawImage(this.image, s.sx+frame*s.w, s.sy, s.w, s.h, x, y, s.w, s.h);
	};
}

首先使用了new function(){},保证了只会有一个实例被创建。

接下来对象内部,通过this为其绑定了两个方法和一个属性。load方法起到加载image的作用,传递两个参数,第一个参数是图像信息,即要绘制的图像在sprite中的位置大小以及在画布上的位置大小。注意callback的用法,这里面的this.image.onload = callbak;当图像加载完成后执行传入的回调函数。

draw方法用来进行图像的绘制,传入canvas的上下文环境,需要绘制的图像对象信息以及图像位置。

这个对象的逻辑构造相对复杂,基本的思路就是自定义load方法,通过load方法完成图像信息的加载。这里的图像信息指的是图像在sprite中的位置、大小等。

使用该对象的方法代码如下:

function startGame(){
	SpriteSheet.load({
		ship:{sx:0, sy:0, w:18, h:35, frames:3}
	},function(){
		SpriteSheet.draw(ctx,"ship",0,0);
		SpriteSheet.draw(ctx,"ship",100,50);
		SpriteSheet.draw(ctx,"ship",150,100,1);
	});
}

这里使用load方法,首先传入所需切图部分的相关数据,接下来在回调函数中调用对象的draw方法进行图像绘制。

时间: 2024-08-09 02:19:09

HTML5面向对象的游戏开发简单实例总结的相关文章

Html5+Lufylegend.js游戏开发(一)引擎介绍及原理

Yorhom|2013-09-26 10:30|次浏览| 游戏开发(4)HTML5(124)游戏引擎(33)Lufylegend.js(1) Html5游戏开发最近受到很多开发者的关注.但是html5本身不是为游戏开发而量身定造的,所以开发起来十分麻烦.因此挑选好的引擎对游戏开发十分有帮助. 在游戏开发中,有这么几种程序语言: C++配合OpenGL(移动端游戏开发) C++配合DirectX(PC端游戏开发) Java (移动端游戏开发) ActionScript(网页游戏开发) html5在

HTML5 2D平台游戏开发——地图绘制篇

此前已经完成了一部分角色的动作,现在还缺少可以交互的地图让游戏看起来能玩.不过在开始之前应当考虑清楚使用什么类型的地图,就2D平台游戏来说,一般有两种类型的地图,Tile-based和Art-based,即基于瓦片风格和美术风格两种.Tile-based的典型代表是<Super Mario>(超级马里奥),Art-based记不太清楚了,能够回想起来的是去年出的一款叫做<Owlboy>(猫头鹰男孩)的游戏.      Super Mario  Owlboy 由于Art-based的

HTML5吃豆豆游戏开发实战(四)2d碰撞检测、重构-第二篇

今天下午在家没事,写代码.先总结一下学习HTML5和JS的一些经验,再来说游戏的事吧! 这完全是一个HTML5和JS的入门新手的见解,如果您和我一样是新手的话,欢迎交流,当然,高手如果不介意的话,帮小弟指点一二那就更好啦,谢谢,嘿嘿!入正题吧! 1.语法方面 1.1  JS关于数组的定义方法要注意: 比如:var walls = [new Wall(262,200,100,30),new Wall(662,60,30,400),new Wall(762,300,200,30)]; 这是定义一个墙

HTML5吃豆豆游戏开发实战(一)使用Canvas绘制游戏主角

最近在学习HTML5,爱因斯坦曾说过,"最好的学习就是自己去经历".于是,我想在学习HTML5的同时,做一款简单的小游戏,这样学习起来也会很有趣的,我想做的是以前小时候玩儿的小霸王上面的很经典的一款游戏,叫"吃豆豆",后面有怪物跟着跑,蛮好玩的,还很虐心,相信大家都玩儿过. 吃豆豆就是这款啦: 我就用前面学的一些HTML5的简单的一些知识来简单模拟这款游戏吧.我做这款游戏不打算用图片,全部用canvas来画,这样才有意思,嘿嘿. 正如大家所看到的,我们游戏的主角就是

ios APP开发简单实例

这一次的任务是两个人合作设计一个简单的APP,其中设计到了源代码的设计,源代码的实现以及源代码的控制.在设计app前,我们先仔细研究了软件是如何设计与实现的,然后我们决定做个简单的app—提醒小闹钟.在设计的过程中,问题很多,因为从未设计过app,开始完全不知道如何去设计代码,我们两个商量了下,在百度找到了教程,跟着教程一步一步研究如何设计一个app.我们觉得做一个提醒小闹钟app,其功能是使用者设置好时间与事项后,该app就会在使用者设置的时间响起,然后显示使用者之前输入的事项. 代码我们参考

HTML5 2D平台游戏开发——角色动作篇之指令技

一般在动作游戏中,玩家可以通过对输入设备输入一系列的指令让角色完成某个或多个特定的动作.以格斗游戏<拳皇>为例,键入↓→↓← + A or C可以触发IORI的必杀技八稚女: 通过一系列输入最终让角色完成某个动作,就是指令技.其原理是通过将玩家的键入与指令技列表中的键位进行比对,如果一致,就匹配成功.以下是JavaScript的简单实现: class Instruct { constructor(callback) { this.instructs = {}; this.MAX_INTERVA

Java WebService 开发简单实例

Web Service 是一种新的web应用程序分支,他们是自包含.自描述.模块化的应用,可以发布.定位.通过web调用.Web Service可以执行从简单的请求到复杂商务处理的任何功能.一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务. 实际上,WebService的主要目标是跨平台的可互操作性.为了达到这一目标,WebService完全基于XML(可扩展标记语言). XSD(XMLSchema)等独立于平台.独立于软件供应商的标准,是创建可互操作的.分布式应用程序

cocos2dx游戏开发简单入门视频教程 (cocos2d-x)- 第1天

转载请注明出处:http://blog.csdn.net/xingxiliang/article/details/18557631 更新:出品了box2d编辑工具PhysicsEditor的视频(一起做一个实战级别的游戏,需要MAC操作系统)http://blog.csdn.net/s_xing/article/details/21331459 更新:出品了box2d物理引擎视频http://blog.csdn.net/s_xing/article/details/20836727 更新:终于出

HTML5吃豆豆游戏开发实战(二)主角移动和动画循环设置

接着上一篇讲,在上一篇中呢,我已经使用Canvas绘制出了我们游戏的主角,姑且叫它"小嘴"吧,因为只有嘴巴,嘿嘿,我还添了眼睛. 在这一篇中呢,就实现物体的移动和动画播放(一直张开嘴吧关闭嘴巴的动画,很饥渴的样子). 1. 要做玩家和游戏的交互,当然要考虑--如何设置按键响应这个问题. 那么如何设置呢? 我们可以通过在body标签里面添加事件来响应用户的操作: 由于我们要用W,A,S,D来控制物体的上下移动,这是按键响应,于是我们选择用onkeydown事件. onkeydown 事件