TextContentTyper API 文档 
本文档由 DeepSeek R1 模型生成并微调。
类描述 
TextContentTyper 是文字逐字输出(打字机效果)的核心控制器,继承自 EventEmitter。用于管理文字排版、渲染时序及样式配置,支持动态修改文本内容和样式。
核心属性说明 
| 属性名 | 类型 | 描述 | 
|---|---|---|
config | Required<TyperConfig> | 当前文字渲染配置(包含字体、行高、对齐等参数) | 
parser | TextContentParser | 文字解析器实例(负责分词、分行等底层处理) | 
核心方法说明 
constructor 
typescript
function constructor(config: Partial<ITextContentConfig>): TextContentTyper;初始化打字机实例,接受文字配置参数:
typescript
interface ITextContentConfig {
    /** 字体 */
    font: Font;
    /** 是否持续上一次的文本,开启后,如果修改后的文本以修改前的文本为开头,那么会继续播放而不会从头播放(暂未实现,后续更新) */
    keepLast: boolean;
    /** 打字机时间间隔,即两个字出现之间相隔多长时间 */
    interval: number;
    /** 行高 */
    lineHeight: number;
    /** 分词规则 */
    wordBreak: WordBreak;
    /** 文字对齐方式 */
    textAlign: TextAlign;
    /** 行首忽略字符,即不会出现在行首的字符 */
    ignoreLineStart: Iterable<string>;
    /** 行尾忽略字符,即不会出现在行尾的字符 */
    ignoreLineEnd: Iterable<string>;
    /** 会被分词规则识别的分词字符 */
    breakChars: Iterable<string>;
    /** 填充样式 */
    fillStyle: CanvasStyle;
    /** 描边样式 */
    strokeStyle: CanvasStyle;
    /** 线宽 */
    strokeWidth: number;
    /** 文字宽度,到达这么宽之后换行 */
    width: number;
}setConfig 
typescript
function setConfig(config: Partial<ITextContentConfig>): void;动态更新配置参数(支持部分更新)
setText 
typescript
function setText(text: string): void;设置要显示的文本内容(自动重置播放进度)
type 
typescript
function type(): void;启动逐字显示效果
typeAll 
typescript
function typeAll(): void;立即完整显示所有文字
setRender 
typescript
function setRender(render: TyperFunction): void;设置自定义渲染逻辑:
typescript
type TyperFunction = (
    data: TyperRenderable[], // 待渲染元素
    typing: boolean // 是否正在播放中
) => void;事件说明 
| 事件名 | 参数 | 触发时机 | 
|---|---|---|
typeStart | [] | 开始逐字显示时 | 
typeEnd | [] | 全部文字显示完成时 | 
使用示例 
基础用法 - 对话框文字 
typescript
// 初始化配置
const typer = new TextContentTyper({
    font: new Font('黑体', 18),
    interval: 50,
    lineHeight: 1.2,
    width: 400
});
// 设置文本内容
typer.setText(`「这是逐字显示的文字效果...
            第二行会自动换行」`);
// 注册渲染逻辑
typer.setRender((elements, isTyping) => {
    elements.forEach(element => {
        if (element.type === TextContentType.Text) {
            drawText(element.x, element.y, element.text);
        }
    });
});
// 开始播放
typer.type();动态样式修改 
typescript
// 修改为红色斜体
typer.setConfig({
    font: new Font('楷体', 20),
    fillStyle: '#ff0000'
});
// 修改播放速度
typer.setConfig({ interval: 30 });底层数据结构 
渲染元素类型 
typescript
type TyperRenderable =
    | TyperTextRenderable // 文本元素
    | TyperIconRenderable // 图标元素
    | TyperWaitRenderable; // 等待间隔ts
interface TyperTextRenderable {
    type: TextContentType.Text;
    x: number;
    y: number;
    text: string;
    font: string;
    fillStyle: CanvasStyle;
    strokeStyle: CanvasStyle;
    /** 文字画到哪个索引 */
    pointer: number;
    /** 这段文字的总高度 */
    height: number;
}ts
interface TyperWaitRenderable {
    type: TextContentType.Wait;
    wait: number;
    waited: number;
}注意事项 
性能优化
当处理长文本(>1000 字)时,建议预调用parser.parse()坐标系统
所有坐标基于初始化时设置的width参数进行相对计算动态修改限制
在播放过程中修改配置可能导致渲染异常,建议在typeEnd事件后操作使用场景
本接口的使用场景并不多,建议使用TextContent组件。如果必须使用的话,可以直接阅读源码来看一些实现细节。