You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Konva.js加载舞台JSON字符串后显示空白,求排查方向

Konva.js加载舞台JSON显示空白的排查方向

你的问题核心是Shape节点缺少绘图逻辑定义,Konva.Shape必须通过sceneFunc或drawFunc指定图形的绘制方式,否则无法渲染出可见图形。以下是具体排查点:

  • 检查Shape的JSON结构:每个className: "Shape"的节点必须包含sceneFunc(或drawFunc)属性,该属性是定义图形绘制逻辑的函数(序列化后为字符串形式)。比如一个矩形的Shape节点JSON应该类似:

    {
      "attrs": {
        "fill": "#00D2FF",
        "strokeWidth": 4,
        "x": 100,
        "y": 100,
        "sceneFunc": "function(context, shape) { context.rect(0, 0, 200, 100); context.fillStrokeShape(shape); }"
      },
      "className": "Shape"
    }
    

    你的现有JSON里只有样式和变换属性,没有绘图函数,所以加载后Shape是空白的。

  • 验证JSON导出过程:确认你导出舞台JSON时,Konva是否正确序列化了Shape的sceneFunc。如果是手动构造的JSON,需要手动添加该函数的字符串形式;如果是通过stage.toJSON()导出,确保导出时没有丢失函数(Konva默认会序列化函数,但部分环境可能需要特殊处理)。

  • 测试简化场景:先创建一个仅包含单个带sceneFunc的Shape的舞台,导出JSON后尝试加载,确认能正常显示后,再逐步添加其他元素(Transformer、多Layer等),定位是否有其他问题。

  • 检查Transformer的关联:你的JSON里Transformer节点缺少node属性(用于绑定目标Shape),加载后Transformer无法关联到对应Shape,但这不是舞台空白的主要原因,修复Shape的绘图逻辑后再处理Transformer的绑定问题。

你的代码示例:

var json = '{"attrs":{"width":986,"height":582.3984375},"className":"Stage","children":[{"attrs":{},"className":"Layer","children":[{"attrs":{"fill":"#00D2FF","strokeWidth":4,"draggable":true,"x":235.58193044034167,"y":99.56706993500848,"rotation":64.3272470520766,"scaleX":0.4839560176457046,"scaleY":0.48395601764570534,"skewX":5.925274218756312e-17},"className":"Shape"},{"attrs":{"rotation":64.32724705207748},"className":"Transformer"}]},{"attrs":{},"className":"Layer","children":[{"attrs":{"fill":"#00D2FF","strokeWidth":4,"draggable":true,"x":492.70053395991056,"y":308.6665397028166,"rotation":-61.82166185395733,"scaleX":0.324361869429112,"scaleY":0.3243618694291115,"skewX":-1.978572243831011e-16},"className":"Shape"},{"attrs":{"rotation":-61.82166185395704,"x":382,"y":137.94663769165763},"className":"Transformer"}]},{"attrs":{},"className":"Layer","children":[{"attrs":{"fill":"#00D2FF","strokeWidth":4,"draggable":true},"className":"Shape"},{"attrs":{},"className":"Transformer"}]}]}';
Konva.Node.create(json, `containerid`);

内容的提问来源于stack exchange,提问作者Surya Deepak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 07:03:16