结构 | 描述 |
---|---|
Package | laya.ui |
Class | Laya.Label |
Hierarchy | Label / UIComponent |
Label 类用于创建显示对象并显示文本,其文字可以是系统字体或BMFont字体。
构造函数
// 创建一个新的Label实例
let label:Label = new Laya.Label(text?:string);
存取器 | 类型 | 描述 | 备注 |
---|---|---|---|
align | String | 水平对齐方式 | left居左/center居中/right居右 |
bgColor | String | 文本背景颜色 | RGB字符串 |
bold | Boolean | 是否加粗 | 默认false |
borderColor | String | 文本边框颜色 | RGB字符串 |
color | String | 文本颜色 | RGB字符串 |
dataSource | - | 数据源 | - |
font | String | 文本字体类型 | 默认Arial |
fontSize | int | 文本字体像素大小 | 默认20px |
height | Number | 显示对象像素高度 | 为0高度自适应 |
italic | Boolean | 文本是否斜体 | 默认false |
leading | Number | 垂直行像素间距 | - |
overflow | String | 文本超出文本域后的溢出方式 | hidden>visible>scroll |
padding | String | 像素内边距 | 上,右,下,左 |
stoke | Number | 描边像素宽度 | 默认为0不描边 |
stokeColor | String | 描边颜色 | RGB色值字符串 |
text | String | 文本内容字符串 | - |
textField | - | 文本空间实体实例 | - |
underline | Boolean | 是否添加下划线 | - |
underlineColor | String | 下划线颜色 | - |
valign | String | 垂直对齐方式 | top顶部对齐/middle居中对齐/bottom底部对齐 |
width | Number | 显示对象像素宽度 | 为0宽度自适应 |
wordWrap | Boolean | 是否自动换行 | 默认false |
例如:
class Test {
constructor() {
//初始化引擎
Laya.init(Laya.Browser.clientWidth, Laya.Browser.clientHeight, Laya.WebGL);
//初始化舞台
this.initStage();
//运行
this.run();
}
/**初始化舞台*/
initStage(){
//设置舞台对齐方式
this.setStageAlign("center", "middle");
//设置舞台屏幕模式
this.setStageScreen("horizontal");
//设置舞台缩放模式
this.setStageScale("showall");
//设置舞台背景
Laya.stage.bgColor = "#000000";
}
/**设置舞台缩放模式 */
setStageScale(mode){
mode = mode.toLowerCase();
if(mode == "noscale"){
//不缩放
Laya.stage.scaleMode = Laya.Stage.SCALE_NOSCALE;
}else if(mode == "showall"){
//显示所有 最小比例缩放
Laya.stage.scaleMode = Laya.Stage.SCALE_SHOWALL;
}else if(mode == "exactfit"){
//全屏不等比缩放
Laya.stage.scaleMode = Laya.Stage.SCALE_EXACTFIT;
}else if(mode == "noborder"){
//无框缩放 最大比例缩放
Laya.stage.scaleMode = Laya.Stage.SCALE_NOBORDER;
}else if(mode == "full"){
//全屏缩放 舞台宽高等于屏幕宽高
Laya.stage.scaleMode = Laya.Stage.SCALE_FULL;
}else if(mode == "fixedwidth"){
//宽度固定 宽度不变 高度根据屏幕比缩放
Laya.stage.scaleMode = Laya.Stage.SCALE_FIXED_WIDTH;
}else if(mode == "fixedheight"){
//高度固定 高度不变 宽度根据屏幕比缩放
Laya.stage.scaleMode = Laya.Stage.SCALE_FIXED_HEIGHT;
}else if(mode == "fixedauto"){
//自动选择 根据宽高比自动选择使用fixedwidth或fixedheight
Laya.stage.scaleMode = Laya.Stage.SCALE_FIXED_AUTO;
}
}
/**设置舞台屏幕模式 */
setStageScreen(mode = "horizontal"){
mode = mode.toLowerCase();
if(mode == "horizontal"){
Laya.stage.screenMode = Laya.Stage.SCREEN_HORIZONTAL;
}else if(mode == "vertical"){
Laya.stage.screenMode = Laya.Stage.SCREEN_VERTICAL;
}
}
/**设置舞台对齐方式 */
setStageAlign(h, v){
h = h.toLowerCase();
if(h == "left"){
Laya.stage.alignH = Laya.Stage.ALIGN_LEFT;
}else if(h == "center"){
Laya.stage.alignH = Laya.Stage.ALIGN_CENTER;
}else if(h == "right"){
Laya.stage.alignH = Laya.Stage.ALIGN_RIGHT;
}
v = v.toLowerCase();
if(v == "top"){
Laya.stage.alignV = Laya.Stage.ALIGN_TOP;
}else if(v == "middle"){
Laya.stage.alignV = Laya.Stage.ALIGN_MIDDLE;
}else if(v == "bottom"){
Laya.stage.alignV = Laya.Stage.ALIGN_BOTTOM;
}
}
run(){
this.createLabel("LABEL DEMO").pos(Laya.stage.width>>1, Laya.stage.height>>1);
}
createLabel(text){
let label = new Laya.Label();
Laya.stage.addChild(label);
label.font = "Microsoft YaHei";
label.fontSize = 30;
label.text = text;
label.color = "#FFFFFF";
label.stroke = 5;
label.strokeColor = "#FF0000";
return label;
}
}
//启动
new Test();
描边
在运行时设置了描边的文本比没有设置的会多调用一次绘图指令,此时文本对CPU的使用量和文本的数量成正比,因此应尽量使用替代方案来完成同样的需求。
- 对于几乎不变动的文本内容,可以使用cacheAs降低性能消耗。
- 对于内容经常变动但使用字符数量较少的文本域,可选择使用位图字体。
方法 | 返回值 | 描述 |
---|---|---|
changeText(text:String) | void | 快速更改显示文本 |
destroy(destroyChild:Boolean=true) | void | 销毁当前对象 |
更改显示文本
大多数情况下,很多文本都无需复杂的排版,仅仅简单地显示一行字,为此Text、Label都提供了名为changeText的方法可以直接跳过排版。
changeText() 方法会直接修改绘图指令中该文本绘制的最后一条指令,前面的绘图指令依旧存在的行为会导致changeText只适用于文本始终只有一行和文本样式始终不变的情况。
changeText() 快速更改显示文本,不会进行排版计算,因此效率较高。如果只是更改文字内容,不更改文字样式,建议采用此接口,能提高效率。
销毁当前对象
destroy()销毁Label对象,默认会将自己从父节点上移除,并清理自身引用关系,等待JavaScript自动垃圾回收机制进行回收。
destroy()会移除自身的事件监听,移除自身的定时器监听,移除子对象并从父节点中移除自己。