{
"deviceOrientation": "portrait",
"showStatusBar": false,
"networkTimeout": {
"request": 50000,
"connectSocket": 50000,
"uploadFile": 50000,
"downloadFile": 50000
},
"workers":"workers"
}
import './js/libs/weapp-adapter'
import './js/libs/symbol'
import Main from './js/main'
new Main()
./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:绘制矩形
// 创建Canvas对象
var canvas = wx.createCanvas()
// 宽高与屏幕等宽等高414*736
console.log(canvas.width, canvas.height)
// 获取2d渲染上下文('2d'获取CanvasRenderingContext2D对象;'webgl'获取WebGLRenderingContext对象)
var context = canvas.getContext('2d')
context.fillStyle = 'red' //填充颜色
//画一个矩形
context.fillRect(0, 0, 100, 100)
//改变Canvas对象的宽高,会导致Canvas内容的清空和渲染上下文的重置
// canvas.width = 300
// canvas.height = 300
// console.log(canvas.width, canvas.height)
例子2:绘制一个图片
// 创建Canvas对象
var canvas = wx.createCanvas()
var context = canvas.getContext('2d')
context.fillStyle = 'red'
context.fillRect(0, 0, 100, 100)
// 创建一个Image对象
var image = wx.createImage()
// 图片加载完毕时会执行注册的 onload 回调函数
image.onload = function () {
console.log(image.width, image.height)
context.drawImage(image, 100, 100)
}
//src 属性可以加载一张本地图片或网络图片
image.src = 'images/hero.png'
例子3:多个Canvas绘制
//上屏
var screenCanvas = wx.createCanvas()
//离屏
var offScreenCanvas = wx.createCanvas()
//离屏上下文
var offContext = offScreenCanvas.getContext('2d')
offContext.fillStyle = 'red'
offContext.fillRect(0, 0, 100, 100)////离屏canvas绘制并没有显示到屏幕上
//把离屏的 offScreenCanvas 绘制到上屏的 screenCanvas 上
var screenContext = screenCanvas.getContext('2d')
screenContext.drawImage(offScreenCanvas, 0, 0)
例子4:触摸事件
wx.onTouchStart(function (e) {
console.log('onTouchStart')
console.log(e.touches[0].clientX)//数组第一个是按下点的详细坐标
console.log(e.touches[0].clientY)
})
wx.onTouchMove(function (e) {
console.log('onTouchMove')
console.log(e.touches)
})
wx.onTouchEnd(function (e) {
console.log('onTouchEnd')
console.log(e.touches)
})
wx.onTouchCancel(function (e) {
console.log('onTouchCancel')
console.log(e.touches)
})
例子5:定时器
/**
* 每2秒周期回调定时函数,并传值
* 参数1:定时回调的函数,可接受参数
* 参数2:时间间隔
* 参数3:回调函数的参数,可以是任何类型
* return:定时器的编号,这个值可以传递给 clearTimeout 来取消该定时。
*/
var number = setInterval(function(e){
console.log(e)
},2000,'传给回调函数的值')
/**
* 取消定时器
*/
clearInterval(number)
/**
* 2秒后触发(参数和setInterval一致)
*/
var num = setTimeout(function (e) {
console.log(e)
}, 2000, '传给回调函数的值')
/**
* 取消延时
*/
clearTimeout(num)
下面是我的公众号“Monkey旺”,欢迎大家关注,一起学习,一起交流
关注公众号,回复关键字“小游戏体验”,获取本文笔记(.html/.enex)