Kineticjs鼠标在&画布或舞台

时间:2014-02-06 20:04:16

标签: 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_icos.show();
});

但是当我进入另一个图层时,他们会向我展示我不喜欢的图层layer_icos

也可以通过翻译为所有图层设置动画,以便外出。

谢谢你,对不起我的英语不好。

2 个答案:

答案 0 :(得分:1)

演示:http://jsfiddle.net/m1erickson/QxL7h/

只有在鼠标悬停在形状上时,舞台才会触发鼠标事件,如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();

答案 1 :(得分:0)

我暂时解决了这个职位。

 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();
   }

});

我没有解决:

如果你有两个带有鼠标输入和鼠标输出的对象,它们是重叠的(一个在另一个之上),当输入一个在另一个之外时,传播对我不起作用。

我解决了:

var pos=stage.getPointerPosition();
if ( (pos.x <=0) || (pos.y <=0) ){}