UNPKG

laya-coreui-es

Version:

laya核心库、ui库es版本,剔除了媒体、TTF等功能。基于 LayaAir-release_2.12.0 修改

438 lines (437 loc) 17.2 kB
import { Sprite } from "./Sprite"; import { BitmapFont } from "./BitmapFont"; import { SpriteStyle } from "./css/SpriteStyle"; import { TextStyle } from "./css/TextStyle"; import { Point } from "../maths/Point"; import { Rectangle } from "../maths/Rectangle"; import { WordText } from "../utils/WordText"; /** * 文本内容发生改变后调度。 * @eventType Event.CHANGE */ /** * <p> <code>Text</code> 类用于创建显示对象以显示文本。</p> * <p> * 注意:如果运行时系统找不到设定的字体,则用系统默认的字体渲染文字,从而导致显示异常。(通常电脑上显示正常,在一些移动端因缺少设置的字体而显示异常)。 * </p> * @example * package * { * import laya.display.Text; * public class Text_Example * { * public function Text_Example() * { * Laya.init(640, 800);//设置游戏画布宽高、渲染模式。 * Laya.stage.bgColor = "#efefef";//设置画布的背景颜色。 * onInit(); * } * private function onInit():void * { * var text:Text = new Text();//创建一个 Text 类的实例对象 text 。 * text.text = "这个是一个 Text 文本示例。"; * text.color = "#008fff";//设置 text 的文本颜色。 * text.font = "Arial";//设置 text 的文本字体。 * text.bold = true;//设置 text 的文本显示为粗体。 * text.fontSize = 30;//设置 text 的字体大小。 * text.wordWrap = true;//设置 text 的文本自动换行。 * text.x = 100;//设置 text 对象的属性 x 的值,用于控制 text 对象的显示位置。 * text.y = 100;//设置 text 对象的属性 y 的值,用于控制 text 对象的显示位置。 * text.width = 300;//设置 text 的宽度。 * text.height = 200;//设置 text 的高度。 * text.italic = true;//设置 text 的文本显示为斜体。 * text.borderColor = "#fff000";//设置 text 的文本边框颜色。 * Laya.stage.addChild(text);//将 text 添加到显示列表。 * } * } * } * @example * Text_Example(); * function Text_Example() * { * Laya.init(640, 800);//设置游戏画布宽高、渲染模式。 * Laya.stage.bgColor = "#efefef";//设置画布的背景颜色。 * onInit(); * } * function onInit() * { * var text = new laya.display.Text();//创建一个 Text 类的实例对象 text 。 * text.text = "这个是一个 Text 文本示例。"; * text.color = "#008fff";//设置 text 的文本颜色。 * text.font = "Arial";//设置 text 的文本字体。 * text.bold = true;//设置 text 的文本显示为粗体。 * text.fontSize = 30;//设置 text 的字体大小。 * text.wordWrap = true;//设置 text 的文本自动换行。 * text.x = 100;//设置 text 对象的属性 x 的值,用于控制 text 对象的显示位置。 * text.y = 100;//设置 text 对象的属性 y 的值,用于控制 text 对象的显示位置。 * text.width = 300;//设置 text 的宽度。 * text.height = 200;//设置 text 的高度。 * text.italic = true;//设置 text 的文本显示为斜体。 * text.borderColor = "#fff000";//设置 text 的文本边框颜色。 * Laya.stage.addChild(text);//将 text 添加到显示列表。 * } * @example * class Text_Example { * constructor() { * Laya.init(640, 800);//设置游戏画布宽高、渲染模式。 * Laya.stage.bgColor = "#efefef";//设置画布的背景颜色。 * this.onInit(); * } * private onInit(): void { * var text: laya.display.Text = new laya.display.Text();//创建一个 Text 类的实例对象 text 。 * text.text = "这个是一个 Text 文本示例。"; * text.color = "#008fff";//设置 text 的文本颜色。 * text.font = "Arial";//设置 text 的文本字体。 * text.bold = true;//设置 text 的文本显示为粗体。 * text.fontSize = 30;//设置 text 的字体大小。 * text.wordWrap = true;//设置 text 的文本自动换行。 * text.x = 100;//设置 text 对象的属性 x 的值,用于控制 text 对象的显示位置。 * text.y = 100;//设置 text 对象的属性 y 的值,用于控制 text 对象的显示位置。 * text.width = 300;//设置 text 的宽度。 * text.height = 200;//设置 text 的高度。 * text.italic = true;//设置 text 的文本显示为斜体。 * text.borderColor = "#fff000";//设置 text 的文本边框颜色。 * Laya.stage.addChild(text);//将 text 添加到显示列表。 * } * } */ export declare class Text extends Sprite { /**visible不进行任何裁切。*/ static VISIBLE: string; /**scroll 不显示文本域外的字符像素,并且支持 scroll 接口。*/ static SCROLL: string; /**hidden 不显示超出文本域的字符。*/ static HIDDEN: string; /**默认文本大小,默认为12*/ static defaultFontSize: number; /**默认文本字体,默认为Arial*/ static defaultFont: string; /**@private */ static defaultFontStr(): string; /**语言包,是一个包含key:value的集合,用key索引,替换为目标value语言*/ static langPacks: any; /**WebGL下,文字会被拆分为单个字符进行渲染,一些语系不能拆开显示,比如阿拉伯文,这时可以设置isComplexText=true,禁用文字拆分。*/ static isComplexText: boolean; /**在IOS下,一些字体会找不到,引擎提供了字体映射功能,比如默认会把 "黑体" 映射为 "黑体-简",更多映射,可以自己添加*/ static fontFamilyMap: any; /**@private 位图字体字典。*/ private static _bitmapFonts; static CharacterCache: boolean; /**是否是从右向左的显示顺序*/ static RightToLeft: boolean; /**@private */ private _clipPoint; /**@private 表示文本内容字符串。*/ protected _text: string; /**@private 表示文本内容是否发生改变。*/ protected _isChanged: boolean; /**@private 表示文本的宽度,以像素为单位。*/ protected _textWidth: number; /**@private 表示文本的高度,以像素为单位。*/ protected _textHeight: number; /**@private 存储文字行数信息。*/ protected _lines: any[] | null; /**@private 保存每行宽度*/ protected _lineWidths: number[] | null; /**@private 文本的内容位置 X 轴信息。*/ protected _startX: number; /**@private 文本的内容位置X轴信息。 */ protected _startY: number; /**@private */ protected _words: WordText[] | null; /**@private */ protected _charSize: any; /**@private */ protected _valign: string; /**@private */ private _singleCharRender; /** * <p>overflow 指定文本超出文本域后的行为。其值为"hidden"、"visible"和"scroll"之一。</p> * <p>性能从高到低依次为:hidden > visible > scroll。</p> */ overflow: string; /** * 创建一个新的 <code>Text</code> 实例。 */ constructor(); /** * @private * 获取样式。 * @return 样式 Style 。 * @override */ getStyle(): SpriteStyle; protected _getTextStyle(): TextStyle; /** * 注册位图字体。 * @param name 位图字体的名称。 * @param bitmapFont 位图字体文件。 */ static registerBitmapFont(name: string, bitmapFont: BitmapFont): void; /** * 移除注册的位图字体文件。 * @param name 位图字体的名称。 * @param destroy 是否销毁指定的字体文件。 */ static unregisterBitmapFont(name: string, destroy?: boolean): void; /** * @inheritDoc * @override */ destroy(destroyChild?: boolean): void; /** * @inheritDoc * @override */ getGraphicBounds(realSize?: boolean): Rectangle; /** * @inheritDoc * @override */ get width(): number; /** * @override */ set width(value: number); /** * @inheritDoc * @override */ get height(): number; /** * @override */ set height(value: number); /** * 表示文本的宽度,以像素为单位。 */ get textWidth(): number; /** * 表示文本的高度,以像素为单位。 */ get textHeight(): number; /** 当前文本的内容字符串。*/ get text(): string; get_text(): string; set_text(value: string): void; set text(value: string); /** * <p>根据指定的文本,从语言包中取当前语言的文本内容。并对此文本中的{i}文本进行替换。</p> * <p>设置Text.langPacks语言包后,即可使用lang获取里面的语言</p> * <p>例如: * <li>(1)text 的值为“我的名字”,先取到这个文本对应的当前语言版本里的值“My name”,将“My name”设置为当前文本的内容。</li> * <li>(2)text 的值为“恭喜你赢得{0}个钻石,{1}经验。”,arg1 的值为100,arg2 的值为200。 * 则先取到这个文本对应的当前语言版本里的值“Congratulations on your winning {0} diamonds, {1} experience.”, * 然后将文本里的{0}、{1},依据括号里的数字从0开始替换为 arg1、arg2 的值。 * 将替换处理后的文本“Congratulations on your winning 100 diamonds, 200 experience.”设置为当前文本的内容。 * </li> * </p> * @param text 文本内容。 * @param ...args 文本替换参数。 */ lang(text: string, arg1?: any, arg2?: any, arg3?: any, arg4?: any, arg5?: any, arg6?: any, arg7?: any, arg8?: any, arg9?: any, arg10?: any): void; /** * <p>文本的字体名称,以字符串形式表示。</p> * <p>默认值为:"Arial",可以通过Text.defaultFont设置默认字体。</p> * <p>如果运行时系统找不到设定的字体,则用系统默认的字体渲染文字,从而导致显示异常。(通常电脑上显示正常,在一些移动端因缺少设置的字体而显示异常)。</p> * @see laya.display.Text#defaultFont */ get font(): string; set font(value: string); /** * <p>指定文本的字体大小(以像素为单位)。</p> * <p>默认为20像素,可以通过 <code>Text.defaultFontSize</code> 设置默认大小。</p> */ get fontSize(): number; set fontSize(value: number); /** * <p>指定文本是否为粗体字。</p> * <p>默认值为 false,这意味着不使用粗体字。如果值为 true,则文本为粗体字。</p> */ get bold(): boolean; set bold(value: boolean); /** * <p>表示文本的颜色值。可以通过 <code>Text.defaultColor</code> 设置默认颜色。</p> * <p>默认值为黑色。</p> */ get color(): string; set color(value: string); get_color(): string; set_color(value: string): void; /** * <p>表示使用此文本格式的文本是否为斜体。</p> * <p>默认值为 false,这意味着不使用斜体。如果值为 true,则文本为斜体。</p> */ get italic(): boolean; set italic(value: boolean); /** * <p>表示文本的水平显示方式。</p> * <p><b>取值:</b> * <li>"left": 居左对齐显示。</li> * <li>"center": 居中对齐显示。</li> * <li>"right": 居右对齐显示。</li> * </p> */ get align(): string; set align(value: string); /** * <p>表示文本的垂直显示方式。</p> * <p><b>取值:</b> * <li>"top": 居顶部对齐显示。</li> * <li>"middle": 居中对齐显示。</li> * <li>"bottom": 居底部对齐显示。</li> * </p> */ get valign(): string; set valign(value: string); /** * <p>表示文本是否自动换行,默认为false。</p> * <p>若值为true,则自动换行;否则不自动换行。</p> */ get wordWrap(): boolean; set wordWrap(value: boolean); /** * 垂直行间距(以像素为单位)。 */ get leading(): number; set leading(value: number); /** * <p>边距信息。</p> * <p>数据格式:[上边距,右边距,下边距,左边距](边距以像素为单位)。</p> */ get padding(): any[]; set padding(value: any[]); /** * 文本背景颜色,以字符串表示。 */ get bgColor(): string; set bgColor(value: string); set_bgColor(value: string): void; get_bgColor(): string; /** * 文本边框背景颜色,以字符串表示。 */ get borderColor(): string; set borderColor(value: string); /** * <p>描边宽度(以像素为单位)。</p> * <p>默认值0,表示不描边。</p> */ get stroke(): number; set stroke(value: number); /** * <p>描边颜色,以字符串表示。</p> * <p>默认值为 "#000000"(黑色);</p> */ get strokeColor(): string; set strokeColor(value: string); /** * @private * 一个布尔值,表示文本的属性是否有改变。若为true表示有改变。 */ protected set isChanged(value: boolean); /** * @private */ protected _getContextFont(): string; /** * @private */ protected _isPassWordMode(): boolean; /** * @private */ protected _getPassWordTxt(txt: string): string; /** * @private * 渲染文字。 * @param begin 开始渲染的行索引。 * @param visibleLineCount 渲染的行数。 */ protected _renderText(): void; /** * @private * 绘制下划线 * @param x 本行坐标 * @param y 本行坐标 * @param lineIndex 本行索引 */ private _drawUnderline; /** * <p>排版文本。</p> * <p>进行宽高计算,渲染、重绘文本。</p> */ typeset(): void; /**@private */ private _evalTextSize; /**@private */ private _checkEnabledViewportOrNot; /** * <p>快速更改显示文本。不进行排版计算,效率较高。</p> * <p>如果只更改文字内容,不更改文字样式,建议使用此接口,能提高效率。</p> * @param text 文本内容。 */ changeText(text: string): void; /** * @private * 分析文本换行。 */ protected _parseLines(text: string): void; /** * @private * 解析行文本。 * @param line 某行的文本。 * @param wordWrapWidth 文本的显示宽度。 */ protected _parseLine(line: string, wordWrapWidth: number): void; /**@private */ private _getTextWidth; /** * @private * 获取换行所需的宽度。 */ private _getWordWrapWidth; /** * 返回字符在本类实例的父坐标系下的坐标。 * @param charIndex 索引位置。 * @param out (可选)输出的Point引用。 * @return Point 字符在本类实例的父坐标系下的坐标。如果out参数不为空,则将结果赋值给指定的Point对象,否则创建一个新的Point对象返回。建议使用Point.TEMP作为out参数,可以省去Point对象创建和垃圾回收的开销,尤其是在需要频繁执行的逻辑中,比如帧循环和MOUSE_MOVE事件回调函数里面。 */ getCharPoint(charIndex: number, out?: Point): Point; /** * <p>设置横向滚动量。</p> * <p>即使设置超出滚动范围的值,也会被自动限制在可能的最大值处。</p> */ set scrollX(value: number); /** * 获取横向滚动量。 */ get scrollX(): number; /** * 设置纵向滚动量(px)。即使设置超出滚动范围的值,也会被自动限制在可能的最大值处。 */ set scrollY(value: number); /** * 获取纵向滚动量。 */ get scrollY(): number; /** * 获取横向可滚动最大值。 */ get maxScrollX(): number; /** * 获取纵向可滚动最大值。 */ get maxScrollY(): number; /**返回文字行信息*/ get lines(): any[]; /**下划线的颜色,为null则使用字体颜色。*/ get underlineColor(): string; set underlineColor(value: string); /**是否显示下划线。*/ get underline(): boolean; set underline(value: boolean); /** 设置是否单个字符渲染,如果Textd的内容一直改变,例如是一个增加的数字,就设置这个,防止无效占用缓存 */ set singleCharRender(value: boolean); get singleCharRender(): boolean; }