从Kinetic.Group中删除形状

时间:2014-05-23 09:46:26

标签: jquery-ui kineticjs

我有一个Kinetic.Group,里面包含一些形状和图像。我定义了一个双击删除图像的功能,这里是我的代码:

img.on("dblclick dbltap", function (e) {
        if (e.which != 3) {
            img.getParent().listening(false); //the parent here is the group
            var r = confirm("Are you sure you want to delete this equipment?");
            if (r == true) {
               this.remove();
               layer.draw(this);
               stage.add(layer);
               img.getParent().listening(true);
            }
       }
});

知道该组具有完全相同的删除功能(当然除了我没有调用listen()方法)。

group.on("dblclick dbltap", function (e) {
    if (e.which != 3) {
        var r = confirm("Do you want to delete this?\n\nWarning: You risk to lose its children.");
        if (r == true) {
            this.removeChildren();
            this.remove();
            layer.draw();
            stage.add(layer);
        }
    }
});

当我双击图像并单击“确定”时出现问题,因此我得到两个弹出窗口:

  • 第一个是要求确认是否要删除图像
  • 第二个问我是否要删除该组。

没有.listening(false);禁止听KineticJS中的事件?我做错了什么?

1 个答案:

答案 0 :(得分:1)

您尝试实现的目标是事件不会通过子元素传播。在KineticJS中,您可以使用event.cancelBubble = true;

执行此操作

所以你可以使用:

group.on('click', function(e) {
    e.cancelBubble = true;
});

请参阅HTML5 Canvas Cancel Event Bubble Propagation with KineticJS