laya-coreui-es
Version:
laya核心库、ui库es版本,剔除了媒体、TTF等功能。基于 LayaAir-release_2.12.0 修改
438 lines (437 loc) • 17.2 kB
TypeScript
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;
}