Constantine
export class ShopTitle extends Laya.Script{
public title: string;
constructor(){
super();
}
public _initialize(owner: Laya.Sprite3D): void {
super._initialize(owner);
var sprite3D = this.owner as Laya.MeshSprite3D;
var sprite3DMat = new Laya.StandardMaterial();
sprite3DMat.cull = Laya.BaseMaterial.CULL_NONE;
var imageData = this.canvasWrapText({canvas:document.getElementById("myCanvas"), text:"helloWorld"});
var dataTexture = Laya.DataTexture2D.create(imageData.data, 512, 128);
console.log("data:" + imageData.data.length);
sprite3DMat.diffuseTexture = dataTexture;
sprite3D.meshRender.material = sprite3DMat;
}
//绘制文字到canvas,判断换行位置,和设置canvas高度
public canvasWrapText(options) {
var settings = {
canvas:null,
canvasWidth:512, //canvas的宽度
canvasHeight:128, //canvas的宽度
font:"40px 'Microsoft Yahei'", //文字样式
text:"请修改掉默认的配置", //需要绘制的文本
color:"#000000", //文字的颜色
backgroundColor:"#ffffff", //背景颜色
};
//将传入的配置覆盖掉默认配置
if(!!options && typeof options === "object"){
for(var i in options){
settings[i] = options[i];
}
}
var fontSize = settings.canvasWidth / (settings.text.length + 1);
settings.font = fontSize + "px 'Microsoft Yahei'"
//获取2d的上线文开始设置相关属性
var canvas = settings.canvas;
canvas.width = settings.canvasWidth;
canvas.height = settings.canvasHeight;
var ctx = canvas.getContext("2d");
//绘制背景色
ctx.fillStyle = settings.backgroundColor;
ctx.fillRect(0,0,canvas.width,canvas.height);
//绘制文字
ctx.font = settings.font;
ctx.fillStyle = settings.color;
ctx.fillText(settings.text, 0, (settings.canvasHeight - fontSize) * 0.5);
//return canvas.toDataURL();
return ctx.getImageData(0, 0, canvas.width, canvas.height);
}
}