前端开发那些事让前端飞

基于 Canvas 实现的简易飞机大战

2019-03-04  本文已影响7人  _月光临海

写在前面

项目地址:github
演示效果


基础知识


部分代码依照思路流程简述

使用 ES6class 写法,定义 class 后首先定义一个 init 初始化方法,该方法的作用主要分为三类

1.加载各类图片:背景,loading 过场,朕,敌机,子弹...
2.定义各种属性:游戏开关,画布宽高,飞机大小,子弹速度等等。注意,我们后续会定义创建子弹和创建敌机的方法,而创建的子弹对象需要保存在一个数组中,这个数组同样在 init 方法中定义,还有敌机的数组
3.循环绘制飞机,子弹的位置(loop 方法)

init() {
    Promise.all([
        //  加载图片
        this.createImg(bg),
        this.createImg(loading),
        this.createImg(loadingText),
        this.createImg(bullet),  //  子弹
        ...
    ]).then(res => {
        //  画布大小
        this._width = 400
        this._height = 600
        //  子弹
        this.bullet = res[3]
        this.bullet._width = this.bullet.width
        this.bullet._height = this.bullet.height
        this.bullet.speed = 5    //  子弹速度
        this.bullet.bullets = []
        this.bullet.interval = 500 //   子弹发射间隔
        ...
        //  循环绘图
        requestAnimationFrame(this.loop)
    })
}

循环绘制(loop)的内容

游戏开始


游戏中


结语

心血来潮研究了一下这个东西的流程,还有非常多的地方可以扩展,Todo 吧 ~

上一篇 下一篇

猜你喜欢

热点阅读