HTML5面向对象的游戏开发浅析
沉沙 2018-06-26 来源 : 阅读 2052 评论 0

摘要:本文通过一个简单实例讲解了HTML5面向对象的游戏开发,希望阅读本篇文章以后大家有所收获,帮助大家对HTML5的理解更加深入。

这个对象要实现的是:将一个CSS sprite中的图像绘制到canvas中。首先创建一个SpriteSheet对象,代码如下:

1. var SpriteSheet = new function(){  
2.     this.map = { };  
3.     this.load = function(spriteData,callback){  
4.         this.image = new Image();  
5.         this.image.onload = callback;  
6.         this.image.src = "images/sprites.png";  
7.     };  
8.     this.draw = function(ctx,sprite,x,y,frame){  
9.         var s = this.map[sprite];  
10.         if (!frame) {  
11.             frame = 0;  
12.         };  
13.         ctx.drawImage(this.image, s.sx+frame*s.w, s.sy, s.w, s.h, x, y, s.w, s.h);  
14.     };  
15. }

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

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

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

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

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

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

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


本文由职坐标整理发布,更多相关内容,请关注职坐标WEB前端HTML5/CSS3频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved