HTML5面向对象的游戏开发简单实例分享


本文摘自PHP中文网,作者黄舟,侵删。

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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中的位置、大小等。

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

1

2

3

4

5

6

7

8

9

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方法进行图像绘制。

以上就是HTML5面向对象的游戏开发简单实例分享的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

h5虚拟键盘挡住输入框怎么办

h5的标签使用详解

使用HTML5/css3五步快速制作便签贴特效代码示例分享(图文)

html中序列化标签的简单介绍(代码实例)

HTML5多图片预览上传及点击可拖拽控件的实例分享

HTML5中5大存储方式汇总

HTML5上传图片ios系统和android系统下均显示摄像头拍照和图片选择

element-ui对话框可拖拽的功能如何实现?(附代码)

HTML5实现桌面提醒功能的一个实例代码

HTML5 是什么意思

更多相关阅读请进入《HTML5》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    正在狠努力加载,请稍候...