Skip to content

引擎 API

tui-entine 引擎提供了一系列核心方法,用于创建元素、绘制和处理事件。

createView

创建一个视图元素(容器节点)。

ts
createView() : ITuiView

返回值: ITuiView - 视图元素实例

示例:

ts
const view = engine.createView();
view.style.width = 100;
view.style.height = 100;
view.style.backgroundColor = "#f0f0f0";

createText

创建一个文本元素。

ts
createText() : ITuiText

返回值: ITuiText - 文本元素实例

属性:

  • value: string - 文本内容
  • values: string[] - 多行文本内容

示例:

ts
const text = engine.createText();
text.value = "Hello World";
text.style.fontSize = 16;
text.style.color = "#333333";
text.style.textAlign = "center";

createImage

创建一个图片元素。

ts
createImage() : ITuiImage

返回值: ITuiImage - 图片元素实例

属性:

  • src: string - 图片路径
  • mode: string - 图片模式(默认:'scaleToFill')
  • onload: (event: TuiImageLoadEvent) => void - 加载完成回调
  • onerror: (event: TuiImageErrorEvent) => void - 加载错误回调

示例:

ts
const image = engine.createImage();
image.src = "/static/logo.png";
image.style.width = 100;
image.style.height = 100;
image.onload = (event) => {
  console.log("图片加载完成", event.detail.width, event.detail.height);
};

createButton

创建一个按钮元素。

ts
createButton() : ITuiButton

返回值: ITuiButton - 按钮元素实例

属性:

  • value: string - 按钮文本
  • disabled: boolean - 是否禁用
  • loading: boolean - 是否加载中

示例:

ts
const button = engine.createButton();
button.value = "点击我";
button.style.width = 120;
button.style.height = 40;
button.style.backgroundColor = "#2979ff";
button.style.color = "#ffffff";
button.style.borderRadius = 8;

draw

绘制元素树到 Canvas。

ts
draw(e : ITuiElement, css : UTSJSONObject | null) : void

参数:

  • e: ITuiElement - 根元素
  • css: UTSJSONObject | null - CSS 样式配置(可选)

示例:

ts
// 首次绘制
engine.draw(root, null);

// 带样式配置绘制
const styles = {
  ".container": {
    backgroundColor: "#ffffff",
  },
};
engine.draw(root, styles);

updateElement

更新单个元素的绘制结果(局部重绘)。

ts
updateElement(e : ITuiElement, clear : boolean | null) : void

参数:

  • e: ITuiElement - 要更新的元素
  • clear: boolean | null - 是否清除之前的绘制(可选)

示例:

ts
// 更新元素位置
element.style.transform.translateX = 50;
engine.updateElement(element, true);

// 更新元素颜色
element.style.backgroundColor = "#ff0000";
engine.updateElement(element, false);

measureText

测量文本的宽度。

ts
measureText(text : string, fontSize : number) : number

参数:

  • text: string - 要测量的文本
  • fontSize: number - 字体大小

返回值: number - 文本宽度

示例:

ts
const width = engine.measureText("Hello World", 16);
console.log("文本宽度:", width);

getElementById

通过 ID 获取元素。

ts
getElementById(id : string) : ITuiElement | null

参数:

  • id: string - 元素 ID

返回值: ITuiElement | null - 找到的元素,未找到返回 null

示例:

ts
const element = engine.getElementById("my-element");
if (element != null) {
  element.style.backgroundColor = "#ff0000";
}

handleTouchEvent

处理触摸事件。

ts
handleTouchEvent(e : TuiTouchEvent) : void

参数:

  • e: TuiTouchEvent - 触摸事件对象

示例:

ts
function touchstart(e: TuiTouchEvent) {
  engine.handleTouchEvent(e);
}

function touchmove(e: TuiTouchEvent) {
  engine.handleTouchEvent(e);
}

function touchend(e: TuiTouchEvent) {
  engine.handleTouchEvent(e);
}

init

初始化引擎。

ts
init(e : CanvasContext, callback : (e : ITuiElement) => void) : void

参数:

  • e: CanvasContext - Canvas 上下文
  • callback: (e: ITuiElement) => void - 初始化完成回调

示例:

ts
engine.init(canvasContext, (rootElement) => {
  console.log("引擎初始化完成", rootElement);
});

cached

缓存绘制结果。

ts
cached() : void

示例:

ts
engine.cached();

clearCached

清除缓存。

ts
clearCached() : void

示例:

ts
engine.clearCached();

computelayout

计算元素布局。

ts
computelayout(e : ITuiElement, css : UTSJSONObject | null) : void

参数:

  • e: ITuiElement - 元素
  • css: UTSJSONObject | null - CSS 样式配置(可选)

示例:

ts
engine.computelayout(element, null);

updatePos

更新元素位置。

ts
updatePos(e : ITuiElement) : void

参数:

  • e: ITuiElement - 元素

示例:

ts
engine.updatePos(element);

updateRect

更新矩形信息。

ts
updateRect(rect : NodeInfo) : void

参数:

  • rect: NodeInfo - 节点信息

示例:

ts
engine.updateRect({ x: 0, y: 0, width: 100, height: 100 });