Laya Text

文本 Text

结构描述
Packagelaya.display
Classpublic class Text
InheritanceText / Sprite / Node / EventDispatcher / Object
SubclassInput
  • LayaAir可以通过laya.display.Text类添加文本,给文本设置字体样式、颜色、大小等。
  • LayaAir的Text类用于创建显示对象以显示文本
  • 如果运行时系统寻找不到设定的字体,则用系统默认的字体渲染文字,从而会导致异常。

文本样式

class Test {
    constructor() {
        Laya.init(Laya.Browser.width, Laya.Browser.height, Laya.WebGL);
        this.initStage();
        this.init();
    }
    initStage(){
        Laya.stage.alignH = Laya.Stage.ALIGN_CENTER;
        Laya.stage.alignV = Laya.Stage.ALIGN_MIDDLE;
        Laya.stage.scaleMode = Laya.Stage.SCALE_SHOWALL;
        Laya.stage.bgColor = "#000000";
    }
    init(){
        //根据字体创建文本
        this.createText();
    }
    createText(){
        this.txt = new Laya.Text();
        //设置文本内容宽度,高度自行匹配。
        this.txt.width = 400;
        //设置文本内容自动换行
        this.txt.wordWrap = true;
        //设置文本垂直行间距
        this.txt.leading = 5;
        //设备文本字体颜色
        this.txt.color = "#FF0000";
        //设置文本内容
        this.txt.text = "Layabox是性能最强的HTML5引擎技术提供商与优秀的游戏发行商,面向Flash开发者提供HTML5开发技术方案!";
        //设置文本字体
        this.txt.font = "Microsoft YaHei";
        //设置文本字体大小
        this.txt.fontSize = 40;
        //设置文本水平对齐方式
        this.txt.align = "center";
        //设置文本内容加粗
        this.txt.bold = true;
        //设置文本描边宽度
        this.txt.stroke = 1;
        //设置文本描边颜色
        this.txt.strokeColor = "#FFFFFF";
        //设置文本坐标位置
        this.txt.x = Laya.stage.width - this.txt.width >> 1;
        this.txt.y = Laya.stage.height - this.txt.height >> 1;
        //this.txt.pos(Laya.stage.width - this.txt.width >> 1, Laya.stage.height - this.txt.height >> 1);
        //设置文本区域边框颜色
        this.txt.borderColor = "#444444";

        Laya.stage.addChild(this.txt);
    }
}
//启动
new Test();

设置文本内容尺寸

  • 文本的text动态属性用于设置当前文本内容字符串
  • 文本的textHeight动态属性用于设置当前文本内容的像素高度
  • 文本的textWidth动态属性用于设置当前文本内容的像素宽度

设置文本域尺寸

  • 文本的width动态属性用于设置显示对象文本域的像素宽度
  • 文本的height动态属性用于设置显示对象文本域的像素高度
  • 文本的size(width, height)方法用于设置像是对象文本的像素宽高

设置自动换行

  • 设置自动换行 wordWrap
4933701-ac9daa11974d66c1.png
自动换行
class Test {
    constructor() {
        Laya.init(Laya.Browser.width, Laya.Browser.height, Laya.WebGL);
        this.initStage();
        this.init();
    }
    initStage(){
        Laya.stage.alignH = Laya.Stage.ALIGN_CENTER;
        Laya.stage.alignV = Laya.Stage.ALIGN_MIDDLE;
        Laya.stage.scaleMode = Laya.Stage.SCALE_SHOWALL;
        Laya.stage.bgColor = "#000000";
    }
    init(){
        //根据字体创建文本
        this.createText();
    }
    createText(){
        this.txt = new Laya.Text();
        
        this.txt.size(400, 300);
        this.txt.wordWrap = true;

        this.txt.fontSize = 30;
        this.txt.color = "#FFFFFF";
        this.txt.text = "Layabox是HTML5引擎技术提供商与优秀的游戏发行商";
        this.txt.align = "left";

        this.txt.underline = true;
        this.txt.underlineColor = "#888888";

        this.txt.leading = 20;

        this.txt.x = Laya.stage.width - this.txt.width >> 1;
        this.txt.y = Laya.stage.height - this.txt.height >> 1;

        this.txt.borderColor = "#AAAAAA";
        this.txt.bgColor = "#222222";

        Laya.stage.addChild(this.txt);
    }
}
//启动
new Test();

设置下划线

  • 文本的动态属性underline用于设置是否显示下划线
  • 文本的动态属性 underlineColor用于设置下划线的颜色,为null则会使用字体的颜色。
4933701-8ff46472dd83cf37.png
下划线
class Test {
    constructor() {
        Laya.init(Laya.Browser.width, Laya.Browser.height, Laya.WebGL);
        this.initStage();
        this.init();
    }
    initStage(){
        Laya.stage.alignH = Laya.Stage.ALIGN_CENTER;
        Laya.stage.alignV = Laya.Stage.ALIGN_MIDDLE;
        Laya.stage.scaleMode = Laya.Stage.SCALE_SHOWALL;
        Laya.stage.bgColor = "#000000";
    }
    init(){
        //根据字体创建文本
        this.createText();
    }
    createText(){
        this.txt = new Laya.Text();
        //this.txt.size(300, 50);

        this.txt.fontSize = 30;
        this.txt.color = "#FFFFFF";
        this.txt.text = "Layabox\n是HTML5引擎技术提供商\n与优秀的游戏发行商";

        this.txt.align = "center";

        this.txt.underline = true;
        this.txt.underlineColor = "#888888";

        this.txt.leading = 20;

        this.txt.x = Laya.stage.width - this.txt.width >> 1;
        this.txt.y = Laya.stage.height - this.txt.height >> 1;

        this.txt.borderColor = "#AAAAAA";
        this.txt.bgColor = "#222222";

        Laya.stage.addChild(this.txt);
    }
}
//启动
new Test();

文本对齐方式

  • 文本的align动态属性用于设置文本的水平对齐方式,取值可选left居左对齐、center居中对齐、right居右对齐。
  • 文本的valign动态属性用于设置文本的垂直显示方式,取值可选top顶部对齐、middle居中对齐、bottom居低对齐。

自动调整文本尺寸

通过设置文本的autoSize属性可以根据文本内容自适应其大小

文本内容溢出

public var overflow:String
  • overflow:String文本超出文本域后的行为,可选值为hiddenvisiblescroll
  • overflow:String可选值的性能从低到高依次为 hidden > visible > scroll
public static var HIDDEN:String = hidden

Text.overflow = hidden表示不显示超出文本域的字符

public static var VISIBLE:String = visible

Text.overflow = visible表示不进行任何裁剪

public static var SCROLL:String = scroll

Text.overflow = scroll表示不显示文本域外的字符像素,支持scroll接口。

设置文本的overflowscroll,并且使用scroll接口滚动文本。除了通过对文本区域设置overflow外,还可以通过设置scrollXscrollY滚动文本视口,通过滚动文本来显示全部的文本内容。如果要实现滚动文本则需要使用overflow = Laya.Text.SCROLL,若设置Laya.Text.HIDDEN则滚动无效果。

class Test {
    constructor() {
        Laya.init(Laya.Browser.width, Laya.Browser.height, Laya.WebGL);
        this.initStage();
        this.init();
    }
    initStage(){
        Laya.stage.alignH = Laya.Stage.ALIGN_CENTER;
        Laya.stage.alignV = Laya.Stage.ALIGN_MIDDLE;
        Laya.stage.scaleMode = Laya.Stage.SCALE_SHOWALL;
        Laya.stage.bgColor = "#000000";
    }
    init(){
        const text = "Layabox是HTML5引擎技术提供商与优秀的游戏发行商,面向AS/JS/TS开发者提供HTML5开发技术方案!";
        this.txt = this.createText(text).pos(50, 20);
        this.txt.on(Laya.Event.MOUSE_DOWN, this, this.onMouseDown);
    }
    onMouseDown(){
        this.prevX = this.txt.mouseX;
        this.prevY = this.txt.mouseY;
        //移动文本修改坐标
        Laya.stage.on(Laya.Event.MOUSE_MOVE, this, this.onScrollStartText);
        Laya.stage.on(Laya.Event.MOUSE_UP, this, this.onScrollFinishText);
    }
    onScrollStartText(){
        this.txt.scrollX += this.prevX - this.txt.mouseX;
        this.txt.scrollY += this.prevY - this.txt.mouseY;

        this.prevX = this.txt.mouseX;
        this.prevY = this.txt.mouseY;
    }
    onScrollFinishText(){
        Laya.stage.off(Laya.Event.MOUSE_MOVE, this, this.onScrollStartText);
        Laya.stage.off(Laya.Event.MOUSE_UP, this, this.onScrollFinishText);
    }
    createText(text="", width=400, height=300, fontSize=20){
        let txt = new Laya.Text();

        if(width > 0 && height > 0){
            txt.size(width, height);    
        }else if(width > 0 && height <=0 ){
            txt.width = width;
        }else if(width <= 0 && height > 0){
            txt.height = height;
        }
        
        txt.color = "#444444";
        txt.fontSize = fontSize;

        txt.text = text;

        txt.overflow = Laya.Text.SCROLL;

        txt.borderColor = "#DDDDDD";
        txt.bgColor = "#EEEEEE";
        

        Laya.stage.addChild(txt);

        return txt;
    }
}
//启动
new Test();

使用BitmapFont加载显示位图字体

  • 文本的defaultFont静态属性用于设置文本字体类型,默认为Arial
  • 文本的defaultFontSize静态属性用于设置文本字体像素大小,默认为12像素。
  • 文本的font动态属性用于设置文本字体类型
  • 文本的fontSize动态属性用于设置文本字体像素大小,默认20像素。

位图字体(Bitmap Fonts)又叫点阵字体或像素字体(Pixel Fonts),区别于矢量字体,指的是在类似九宫格有限像素空间内以一个一个点组合描述的字体外观样式。

位图字体由fnt格式的字体和一张png图片组成,fnt文件提供了对每个字符小图的索引,这种格式的字体可以由专门的软件生成,比如位图字体制作工具。

位图字体制作工具

输入框 Input

结构描述
Pakcagelaya.display.Input
HierarchyInput / Text

laya.display.Input类用于创建显示对象以显示和输入文本,Input类封装了原生的文本输入框,由于不同浏览器的差异会导致此对象的默认文本的位置域用户点击输入时的位置存在偏差。

创建新的Input类的实例

let input = new Laya.Input()

输入框Input的类型type作为静态常量之一,可选值包括:

输入框类型描述
input.type = Laya.Input.TYPE_TEXT常规文本域
input.type = Laya.Input.TYPE_PASSWORD用于密码域输入
input.type = Laya.Input.EMAIL包含邮箱地址的输入域
input.type = Laya.Input.URL包含URL地址的输入域
input.type = Laya.Input.NUMBER用于包含数值的输入域
input.type = Laya.Input.RANGE包含一定数字范围的输入域,显示为滑动条。
input.type = Laya.Input.DATE选取日期的年月日
input.type = Laya.Input.MONTH选取年和月
input.type = Laya.Input.WEEK选择周和年
input.type = Laya.Input.TIME选择包含小时和分钟的时间
input.type = Laya.Input.DATE_TIME选择UTC的年月日时分秒
input.type = Laya.Input.DATE_TIME_LOCAL选取本地时间的年月日时分秒
  • 输入框输入字符限制restrict
  • 输入框输入字符限制 maxChars
4933701-ada293df6f1c6596.png
输入框
class Test {
    constructor() {
        Laya.init(Laya.Browser.width, Laya.Browser.height, Laya.WebGL);
        this.initStage();
        this.init();
    }
    initStage(){
        Laya.stage.alignH = Laya.Stage.ALIGN_CENTER;
        Laya.stage.alignV = Laya.Stage.ALIGN_MIDDLE;
        Laya.stage.scaleMode = Laya.Stage.SCALE_SHOWALL;
        Laya.stage.bgColor = "#000000";
    }
    init(){
        this.createText("账号").pos(50, 20);
        this.createInput().pos(50, 50);
    }
    createText(text="", fontSize=20){
        this.txt = new Laya.Text();
        this.txt.color = "#FFFFFF";
        this.txt.fontSize = fontSize;
        this.txt.text = text;
        Laya.stage.addChild(this.txt);
        return this.txt;
    }
    createInput(prompt="请输入...", width=200, height=30, fontSize=20, restrict="0-9a-zA-Z", maxChars=20){
        this.input = new Laya.Input();
        //输入框宽高尺寸
        this.input.size(width, height);
        //输入框样式
        this.input.borderColor = "#DDDDDD";
        this.input.bgColor = "#EEEEEE";
        //输入框字体样式
        this.input.fontSize = fontSize;
        this.input.color = "#444444";
        //移动端输入提示符
        this.input.promopt = prompt;
        //是否自动换行
        this.input.wordWrap = false;
        //是否多行输入
        this.input.multiline = false;
        //输入框内间距像素大小 [上,右,下,左]
        this.input.padding = [0, 5, 0, 5];
        //输入字符内容限制
        this.input.restrict = restrict;
        //输入字符个数限制
        this.input.maxChars = maxChars;

        Laya.stage.addChild(this.input);
        return this.input;
    }
}
//启动
new Test();

文本输入框 TextInput

文本输入框是游戏中经常会使用到的UI组建,任何使用需要输入的时候都需要使用Laya.TextInput类。Laya.TextInput/laya.ui.TextInput继承自laya.ui.labelLaya.TextInput类用于创建显示对象和输入文本。

结构
Packagelaya.ui
Classpublic class TextInput
InheritanceTextInput / Label / Component / Sprite / Node / EventDispatcher / Object
SubClassTextArea

例如:显示单行文本

class Test{
    constructor(){
        //初始化引擎
        Laya.init(Laya.Browser.clientWidth, Laya.Browser.clientHeight, Laya.WebGL);
        //初始化舞台
        this.initStage();
        //初始化单行文本输入框
        this.initSingleTextInput();
    }
    //初始化舞台
    initStage(){
        //舞台设置
        Laya.stage.alignH = Laya.Stage.ALIGN_CENTER;//设置舞台水平居中
        Laya.stage.alignV = Laya.Stage.ALIGN_MIDDLE;//设置舞台垂直居中
        Laya.stage.scaleMode = Laya.Stage.SCALE_SHOWALL;//设置舞台缩放模式为显示所有
        Laya.stage.bgColor = "#000000";//设置舞台背景颜色为黑色
    }
    //初始化单行文本输入框
    initSingleTextInput(){
        const text = "请输入";
        let input = new Laya.TextInput(text);
        input.text = "";//设置文本
        input.wordWrap = false;//设置文本自动换行
        input.fontSize = 24;//设置文本大小
        input.width = 220;
        input.height = 32;
        input.x = (Laya.stage.width - input.width)/2;
        input.y = (Laya.stage.height - input.height)/2;
        input.bgColor = "#fafafa";
        input.color = "#222";
        input.editable = true;//设置可编辑状态
        input.focus = true;//设置焦点在显示对象上
        input.maxChars = 20;//设置字符限制,默认为10000.
        input.multiline = false;//设置是否为文本域
        input.prompt = "账号";//设置输入提示符
        input.promptColor = "#888";//设置输入提示符字体颜色
        Laya.stage.addChild(input);
    }
}
new Test();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值