2013-11-28 30 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