正如您在fiddle中看到的那样。或者在我的代码中,我正试图让事件发生。将鼠标悬停在方框上并单击空格键时,确认窗口将显示。点击“是”后,该框将被删除。
错误/问题是,一旦删除该框并再次单击空格键,它就会出现相同的提示。我以为我已经通过rTwo.setListening(false);
layer.drawHit();
无论如何,任何帮助将不胜感激。 谢谢。
代码:
var stage = new Kinetic.Stage({
container: 'container',
width: 850,
height: 400
});
var layer = new Kinetic.Layer();
var rTwo = new Kinetic.Rect({
x: 0,
y: 0,
width: 100,
height: 50,
fill: 'blue',
draggable: true,
});
layer.add(rTwo);
rTwo.on('mouseover', function() {
document.onkeypress = function(e) {
e = e || window.event;
var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
if (charCode == 32) {
var b1 = confirm("Would you like to delete router 2?");
if (b1 == true) {
rTwo.hide();
rLayer.draw();
rTwo.setListening(false);
rlayer.drawHit();
} else if (b1 == false) {
rLayer.draw();
}
}
};
});
stage.add(layer);
答案 0 :(得分:1)
所以这是你的逻辑:在鼠标悬停时你注册onkeypress函数,它检查按键,如果该键是空格键,则显示提示。
mouseover->注册功能
功能 - >检查按键 - >是空格键? - >显示提示
如果你看这个,你检查空格键是否鼠标悬停,因为鼠标悬停只是注册一个功能。基本上你需要重新检查你的鼠标是否在矩形中。
rTwo.on('mouseover mousemove', function(){
document.onkeypress = function(e) {
e = e || window.event;
var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
if (charCode == 32 && rTwo.intersects(stage.getUserPosition())) {
var b1 = confirm("Would you like to delete router 2?");
if (b1 == true){
rTwo.hide();
layer.drawHit(); // or whichever layer rTwo is in
layer.draw();
rTwo.setListening(false);
}
else if (b1 == false){
layer.draw(); // you don't really need to redraw this here as nothing is changed
}
}
};
});