跳到主要内容

📞 Props:回调

Prop签名描述
onWatch(state, durationMs, detail?) => void初始化阶段回调;durationMs 从本次 init 开始计时
onPaintCallback(payload: PaintCallbackPayload) => void成功上色时触发,或未选择画笔时点击区域触发
onError(message, error?) => void分割或加载失败

PaintCallbackPayload

(可辨识联合类型,通过 payload.kind 区分):

// 成功上色
{
kind: 'painted';
regionId: number;
regionName: string;
color: BgrColor;
configJson?: Record<string, unknown>; // 来自 setPaintColor / initialPaintConfigJson
}

// 点击了有效区域但未选择画笔(未执行上色)
{
kind: 'brush_required';
hint: string; // 如 "请先选择画笔颜色(底部颜色条或 ref.setPaintColor)"
regionId: number;
regionName: string;
}

示例:

onPaintCallback={payload => {
if (payload.kind === 'brush_required') {
showToast(payload.hint);
return;
}
savePaintRecord(payload.regionId, payload.color, payload.configJson);
}}

onWatch detail(MaskSegmentWatchDetail)

字段类型描述
regionCountnumber当前有效区域数
maskPathsReadyboolean轮廓 Skia 路径是否就绪
freqLayersReadyboolean频域 Shader 纹理是否就绪
errorMessagestringerror 状态下的失败描述

onWatch 状态流转

init
→ images_loaded 原始图像和遮罩读取完成
→ mask_aligned 遮罩尺寸对齐
→ mask_sampled 遮罩像素采样完成
→ regions_ready 区域提取成功
→ layers_ready 上色纹理层就绪(detail.maskPathsReady 可能仍为 false)
→ interactive 可交互(可以点击区域、选择颜色、上色)
→ mask_paths_ready 轮廓路径就绪(轮播虚线轮廓可显示;detail.maskPathsReady 为 true)
→ error 失败(detail.errorMessage 包含描述)

layers_ready / interactive 可能在轮廓路径计算完成之前触发。如果宿主在 interactive 时关闭阻塞加载器,用户已可操作;轮播虚线轮廓在 mask_paths_ready 后自动显示。