沉沙
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
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号