引擎系统文本的实现是先将文本绘制到 Canvas,然后再生成图片给 Label 组件使用。
Label._canvasPool = {
pool: [],
get () {
let data = this.pool.pop();
if (!data) {
let canvas = document.createElement("canvas");
let context = canvas.getContext("2d");
data = {
canvas: canvas,
context: context
}
// default text info
context.textBaseline = 'alphabetic';
}
return data;
},
put (canvas) {
if (this.pool.length >= 32) {
return;
}
this.pool.push(canvas);
}
};
引擎中创建的这个canvas,需要一直创建吗?