检出this SketchonMouseDown事件可以正常工作。当您单击两个圆圈中的任何一个时,它们将从红色变为蓝色。

但是,当您尝试双击它们时,即使有onDoubleClick事件指定它们应变黑,也不会发生任何反应。为什么是这样??

这是代码:

var path = new Path.Circle(view.center - 100, 50);
var path2 = new Path.Circle(view.center - 50, 50);

// Create a group from the two paths:
var group = new Group([path, path2]);

// Set the stroke color of all items in the group:
group.strokeColor = 'black';
group.fillColor = 'red';

// Move the group to the center of the view:
group.position = view.center;

group.onMouseDown = function(event){
 group.fillColor = 'blue';
}

group.onDoubleClick = function(event){
 group.fillColor = 'black';
}

最佳答案

这是PaperJS(https://github.com/paperjs/paper.js/issues/834)中的一个未解决问题。如果使用调试器单步调试PaperJS代码,则会发现子元素(在本例中为path元素)将使事件冒泡直到group元素。子元素确定是否将mouseup动作冒泡为单击事件或双击事件。在当前的PaperJS代码中,当子元素本身具有onDoubleClick事件处理程序时,子元素只会冒泡doubleclick事件。由于PaperJS中的此问题,当您期望双击事件时,您的group元素会引发点击事件。在PaperJS中解决问题之前,您可以通过将空的onDoubleClick事件处理程序附加到子元素来解决此问题。例如...

path.onDoubleClick = function(event){};
path2.onDoubleClick = function(event){};
group.onDoubleClick = function(event){
    group.fillColor = 'black';
};

关于javascript - PaperJS onDoubleClick不适用于组吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34299609/

10-10 21:50