有人可以解释"点击"事件和" contentClick"活动?
stage.on("contentClick", function(e) {
console.log("stage contentClick");
})
stage.on("click", function(e) {
console.log("stage click");
})
//Both events get fired equally
我已经注意到" contentClick"似乎只在舞台上工作:
rect.on("contentClick", function(e) {
//This never gets fired
console.log("rect contentClick");
})
...和" contentClick"不能与cancelBubble合作:
rect.on("click", function(e) {
console.log("rect click");
e.cancelBubble = true;
})
stage.on("contentClick", function(e) {
//This fires even though cancelBubble should prevent it
console.log("stage contentClick");
})
除了这些差异之外,究竟是什么IS" contentClick"它通常用于什么?
谢谢!
答案 0 :(得分:0)
任何contentEvent
都会触发DOM元素上的事件。回调的第一个参数是特殊的Kinetic事件对象,您可以通过evt
属性访问本机DOM事件对象(对于v.5.1.0):
stage.on("contentClick", function(e) {
var nativeEvent = e.evt;
console.log("stage contentClick", e);
});
其他事件(没有'内容'前缀)会在Kinetic Node事件中触发。 看一下demo:http://jsbin.com/pomemo/1/edit
尝试点击图片。您将在控制台contentClick
中看到两个事件(从canvas元素冒泡)和click
(" bubled"来自Kinetic.Image)。
然后尝试点击空白区域。您只会看到一个事件contentClick
而没有click
事件(因为您没有点击任何Kinetic.Node)
答案 1 :(得分:0)
我注意到当在特定节点上触发事件时,事件中的targetNode值被设置为该节点....当仅通过单击该阶段触发事件时,则不会在该节点上设置targetNode事件。
所以,我设置我的处理程序来测试targetNode的存在:
UIUtils_stageClick = function(event){
// unselect anything, only if we did not click on a card.... clicking on the table background only
if (!event.targetNode) {
voidFunctions_clearSelection();
}
// hide any error message flag or card label tag
UIUtils_hideErrorToolTip();
UIUtils_hideCardToolTip();
window.game.stage.draw();
}