Kineticjs鼠标在&;走出画布或舞台

Kineticjs鼠标在&;走出画布或舞台,kineticjs,Kineticjs,我喜欢在kineticjs中检测鼠标何时进入画布,何时外出。现在我有了这个解决方案 var _mouse_uno='mouseenter mousemove'; var _mouse_dos='mouseout'; stage.on(_mouse_uno, function(evt) { //QUE NO SE SALGA LA IMAGEN layer_icos.hide(); }); stage.on(_mouse_dos, function(evt) { layer

我喜欢在kineticjs中检测鼠标何时进入画布,何时外出。现在我有了这个解决方案

var _mouse_uno='mouseenter mousemove';
var _mouse_dos='mouseout';

stage.on(_mouse_uno, function(evt) {  //QUE NO SE SALGA LA IMAGEN
    layer_icos.hide();
});

stage.on(_mouse_dos, function(evt) { 
    layer_icos.show();
});
但当我进入另一个图层时,它们会显示我不喜欢的图层
layer\u icos

也有可能通过平移设置所有层的动画,使其向外移动

谢谢你,很抱歉我的英语不好。

演示:

仅当鼠标位于形状上方时,该阶段才会触发鼠标事件,如mouseenter/mouseleave

当鼠标位于后台的空白部分时,后台不会触发鼠标事件

因此,如果您总是想在舞台上获取鼠标事件,您可以添加一个几乎透明的矩形来填充舞台

这样,鼠标始终位于形状上方,并且将始终触发鼠标事件

var bk=new Kinetic.Rect({
    x:0,
    y:0,
    width:stage.getWidth(),
    height:stage.getHeight(),
    fill:"white",opacity:0.01
});
layer.add(bk);
layer.draw();

我暂时解决了这个职位

 bk.on('mouseenter', function(evt) { 

for (var j=0;j<iconos_bases.length;j++){
        //iconos_bases[j].group.setVisible(false);
        iconos_bases[j].group.tween.play()
        continue;
    }
stage.draw();
});
bk.on('mouseout', function(evt) { 
    var pos=stage.getPointerPosition();
    console.log(pos);   
    if ( (pos.x <=0) || (pos.y <=0) ){
         for (var j=0;j<iconos_bases.length;j++){
        //iconos_bases[j].group.setVisible(true);
        iconos_bases[j].group.tween.reverse()
     }
    stage.draw();
   }

});
bk.on('mouseenter',函数(evt){

对于(var j=0;jt谢谢你,我检查一下。但是如果我真的这样做了,如果有鼠标事件的孩子,这个鼠标事件没有执行,我检查它在同一层,有不同的层,有和没有evt.CancelBubblei如果你有两个层,一个是有mouseenter和Mouseeut的对象,另一个是有mouseent的更大的对象不透明度0.01呃mouseout。对我来说,不工作传播。如果你有更大的对象层不执行,如果你有对象层向上,当进入对象执行mouseout在更大。
var pos=stage.getPointerPosition();
if ( (pos.x <=0) || (pos.y <=0) ){}