微信例子游戏:
工程结构:
## 源码目录介绍
./js
├── base // 定义游戏开发基础类
│ ├── animatoin.js // 帧动画的简易实现
│ ├── pool.js // 对象池的简易实现
│ └── sprite.js // 游戏基本元素精灵类
├── libs
│ ├── symbol.js // ES6 Symbol简易兼容
│ └── weapp-adapter.js // 小游戏适配器
├── npc
│ └── enemy.js // 敌机类
├── player
│ ├── bullet.js // 子弹类
│ └── index.js // 玩家类
├── runtime
│ ├── background.js // 背景类
│ ├── gameinfo.js // 用于展示分数和结算界面
│ └── music.js // 全局音效管理器
├── databus.js // 管控游戏状态
└── main.js // 游戏入口主函数
文件说明:
1.game.js 小游戏入口文件。
import './js/libs/weapp-adapter'
import './js/libs/symbol'
import Main from './js/main'
new Main()
//weapp-adapter是默认的游戏适配器文件。
2.game.json 配置文件,文件位于根目录下,完成界面渲染和属性设置。
ex.
{
"deviceOrientation": "portrait",
}
//key="deviceOrientation"
//value="portrait"(竖屏),landscape(横屏)
3.runtime目录:
main文件,main.js里有程序的主函数,包括游戏开始、敌人产生、游戏侦循环、图像绘制、碰撞检测等。游戏结束后重新开始的按钮及事件处理也在这个文件中。
databus是个全局状态管理器,可以回收敌人,回收子弹,被回收的内容,不会进行侦循环,就不会绘制到屏幕上。
4.npc目录:
是敌机类,从类Animation继承而来,有属性可以设置敌机飞行速度、敌机图像、预订的敌机被击中时爆炸的动画。
5.player目录:
玩家战机,和子弹类。都是从Sprite类继承而来。其中玩家战机中有手指控制战机位置的事件处理。子弹类中有子弹速度参数,及子弹超出屏幕回收的处理逻辑,当然这两个类都有绘制图像的资源定义。
6.base目录:
对象池类,游戏基础的精灵Sprite类,和从精灵类继承而来的简易的帧动画类Animation。pool类用于对象回收,Sprite类中声明的宽度、高度、坐标、图像,调用适配器中cavans绘制图像(战机)。还有简单的精灵碰撞(中心点碰撞)的定义。Animation类提供了让精灵播放预定的帧动画的功能。
7.lib目录:
游戏适配器代码,weapp-adapter 不是小游戏基础库的一部分,今后官方也将不再对 weapp-adapter 进行更新和维护。开发者应该根据自己使用的游戏引擎,实现自己的 Adapter 来使所用的游戏引擎适配小游戏的运行环境。