2013-11-28 29 views
0

在下面的例中,有两种形状,矩形和半透明圆: http://jsfiddle.net/cequiel/zZ22s/Kineticjs:避免的形状接收任何鼠标事件

var stage = new Kinetic.Stage({ 
    container: 'canvas', 
    width: 800, 
    height: 600 
}); 
var layer = new Kinetic.Layer(); 

// adds a rectangle 
var rect = new Kinetic.Rect({ 
    x: 100, 
    y: 50, 
    width: 200, 
    height: 150, 
    fill: 'yellow', 
    stroke: 'black' 
}); 
rect.on('mousedown', function() { 
    $('#text').text('mouse down'); 
}).on('mouseup', function() { 
    $('#text').text('mouse up'); 
}).on('mouseenter', function() { 
    $('body').css('cursor', 'pointer'); 
    $('#text').text('mouse enter'); 
}).on('mouseleave', function() { 
    $('body').css('cursor', 'default'); 
    $('#text').text('mouse leave'); 
}); 
layer.add(rect); 

// adds a semitransparent circle 
var circ = new Kinetic.Circle({ 
    x: 300, 
    y: 125, 
    radius: 60, 
    fill: 'green', 
    stroke: 'black', 
    opacity: 0.2, 
    locked: true 
}); 
layer.add(circ); 

stage.add(layer); 

的矩形捕获鼠标向下,向上,进入和离开事件。但是当鼠标在圆上时,该矩形不会收到任何事件。这很好。但是,我怎么能避免这种情况?我的意思是,我怎么能让这个圆圈对鼠标事件“隐形”?我正在寻找类似于AS3中定义的'mouseEnabled'属性的东西: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/InteractiveObject.html#mouseEnabled

谢谢。

回答

1

您可以指示任何形状暂时停止侦听这样的事件:

myShape.setListening(false); 
+0

非常感谢您!你是我的偶像:)这解决了我的问题。 – Cequiel