1.0.1 • Published 5 years ago

@jslq/chaos v1.0.1

Weekly downloads
1
License
ISC
Repository
-
Last release
5 years ago

Chaos

chaos是一个canvas的应用框架,主要实现canvas的图片组件的渲染和移动端的布局兼容性。可实现对组件的点击事件的逻辑处理。可用于一些小游戏的开发。

特性

  • 全局数据管理
  • 浏览器布局自适应
  • 图片资源加载起
  • 组件话
  • 状态保存和恢复

待完善

  • 全局状态管理的重构(状态机)
  • 应用的快照和恢复
  • 更多组件的封装

立即体验

下载

npm install @jslq/chaos --save

构造函数

let chaos = new Chaos({
	debug: process.env.NODE_ENV === 'development',
	ratio: 3,
	globalData: {},
	success: () => {},
	error: () => {}
})

参数

debug

开启chaos提示

ratio

在移动端,canvas绘制图形和图片的时候会有锯齿,所有需要放大倍数

globalData

应用的全局数据管理,可在组件内部读取和设置

success

挂载成功了调用

error

加载失败后调用

方法

加载图片资源

chaos.loadImages({
	image1: 'http://abc.image.com/images1',
	imageList: ['http://abc.image.com/images1', 'http://abc.image.com/images2']
})

方法返回chaos自身,加载图片资源,会缓存在chaos的_loader对象中

挂载canvas

chaos.mount('#container')

方法返回chaos自身,将canvas的dom对象append到#container里

使用组件

chaos.use('componentName', ImageComponent({}))

组件

图片组件

使用

import { ImageComponent } from '@jslq/chaos'

game.use('adsense3', ImageComponent({
	scope: '',
	x(w, h, $data) {

	},
	y(w, h, $data) {

	},
	w(w, h, $data) {

	},
	h(w, h, $data) {

	},
	operate(w, h) {
		console.log(this)
	},
	draw(ctx, w, h, ratio, $data) {

	}
})

可传入参数

scope: 对应图片资源加载器的key值

x: <number | function >图片组件的x坐标, 可传入具体值,或者函数,函数包含w, h, $data三个参数

w: canvas的逻辑像素宽度(不受ratio影响,实际宽度为w * ratio,在框架内部做转化处理)

h: canvas的逻辑像素高度

$data: 即globalData

y: 图片组件的y坐标,其余同x

w: 图片组件的逻辑像素宽度,其余同x

h: 图片组件的逻辑像素高度,其余同x

operate: 组件每一帧渲染时会处理里面的逻辑,可以在函数内部对组件的x, y进行运算,函数内部this指向该图片组件,同时拥有w, h参数

draw: 每个图片组件都有内部的绘制函数,默认使用x, y, w, h的返回值在canvas图层上绘制,函数内部this指向该图片组件,如果需要添加自己的绘制逻辑,有以下形参

ctx: canvas的上下文对象

w: canvas的逻辑像素宽度(不受ratio影响,实际宽度为w * ratio,在框架内部做转化处理)

h: canvas的逻辑像素高度

ratio: 由于draw交给用户处理,实际canvas的物理像素是逻辑像素 * ratio,所以,自己实现的draw方法需要在原来的x, y, w, h尺寸上做ratio的乘法处理

//for example
draw(ctx, w, h, ratio) {
	ctx.drawImage(this.currentImage, this.x * ratio, this.y * ratio, Math.floor((37 / scale) * ratio), h * ratio)
}

onClick: 组件被点击时候使用,函数内部this指向当前组件,可以在这个修改组件的参数和应用的状态

图片组件属性

经过ImageComponent封装后的组件具有以下属性

_x: 图片的x坐标的实际物理像素(x * ratio)

_w: 图片的y坐标的实际物理像素(y) * ratio)

_width: 图片的宽度的实际物理像素(width * ratio)

_height: 图片的高度的实际物理像素(height * ratio)

x: 图片的x坐标的逻辑像素(height * ratio)

y: 图片的y坐标的逻辑像素(height * ratio)

width: 图片的宽度的逻辑像素(height * ratio)

height: 图片的高度的逻辑像素(height * ratio)

_ratio: canvas的缩放比

$canvas: canvas对象

_canvasWidth: canvas的实际物理像素宽度(canvas.width * ratio)

_canvasHeight: canvas的实际物理像素高度

$images: 根据scope返回对应图片封装好的离线canvas对象,用来绘制在当前canvas

operate: 组件operate属性

beforwDraw: 组件draw函数执行前检查属性的正确性

draw: 组件绘制函数

$components: 所有通过chaos.use生成的组件列表

$data: globalData对象

其他属性: 任意定义在组件上的属性都会复制到返回的组件的属性上