【问题标题】:Shapes get repeated in kineticjs stage.draw()?形状在 kineticjs stage.draw() 中重复?
【发布时间】:2014-04-08 20:00:22
【问题描述】:

每当我绘制形状时,我只需调用 stage.draw() 方法, 所以形状再次重复。 所以我的问题是如何在不出现更多先前绘制的形状的情况下添加形状。
这里是示例代码

//creating group for adding text
     var textGroup = new Kinetic.Group({
                    x: e.pageX,
                    y: e.pageY - posY,
                    draggable: true,
                    id: 'textgroup'
                });
                layer.add(textGroup);
                stage.add(layer);
                textname = 'text' + shapecount;
//creating text 
                var text = new Kinetic.Text({
                    x: 0,
                    y: 0,
                    text: comment,
                    fill: "#" + fillcolor,
                    fontSize: 24,
                    opacity: 0.5,
                    name: textname
                });
//adding text into group
                textGroup.add(text);
//finally drawing stage
                  stage.draw();


 Can anyone help me out?

    Thanks in Advance, 

【问题讨论】:

    标签: kineticjs


    【解决方案1】:

    你可以在你添加了形状的组上调用 draw() 方法。这只会重绘该特定组中的形状。 IE。 textGroup.draw()

    事实上,您可以从任何节点(包括形状、层、阶段、组等)调用 draw() 方法。

    更新

    我做了一个小提琴http://jsfiddle.net/u9xHe/1/。添加一个文本形状,调用draw,然后添加另一个文本形状并再次调用draw。在这种情况下似乎没有什么不妥。

    【讨论】:

    • 感谢您的回复,我还是遇到了同样的问题
    • 您能否更好地阐明您的问题。也许使用 Fiddle 示例。 draw() 方法不应再添加任何形状,而只是重绘现有形状。
    • 我正在绘制一个矩形,然后绘制一个圆形,在这种情况下,矩形和圆形只添加了一次。当我将舞台保存到服务器并像下面的方法一样再次加载时,stage = Kinetic.Node.create(json, 'toImage');在这里,每个形状出现了两次
    • 那么您的问题可能是您将舞台保存到服务器时,或者当您从 JSON 文件创建舞台时。您能否将这部分的功能与 JSON 文件一起提供?此外,如果您不想再次绘制形状,可以调用 shape.destroy()。下次您在其父对象之一上调用 draw 时,将不再绘制该形状。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 2012-07-06
    • 2012-06-06
    相关资源
    最近更新 更多