2013-03-21 123 views
2

我使用下面的改变光标的风格,当鼠标在圈子:KineticJS鼠标悬停圈 - 光标样式

var circle1 = new Kinetic.Circle({ 
      x: 512, 
      y: 512, 
      radius: 140, 
      stroke: '#00ffff', 
      strokeWidth: 4, 
      opacity: 0.5 
     }); 

  circle1.on('mouseover', function() { 
       document.body.style.cursor = 'pointer'; 
      }); 
      circle1.on('mouseout', function() { 
       document.body.style.cursor = 'default'; 
      }); 

,如果我画用圆的伟大工程

但是,如果我使用:

var circle1 = new Kinetic.Circle({ 
       drawFunc: function (canvas) { 
        var context1 = canvas.getContext(); 
        context1.beginPath(); 
        context1.arc(512, 512, this.getRadius(), 0, 2 * Math.PI, false); 
        context1.lineWidth = this.getStrokeWidth(); 
        context1.strokeStyle = this.getStroke(); 
        context1.stroke(); 
       }, 
       radius: 140, 
       stroke: '#00ffff', 
       strokeWidth: 15, 
       opacity: 0.5 
      }); 

它不工作!光标不会改变其风格;我们可以使用半径为鼠标结束。我会很感激你的建议,在此先感谢。

回答

1

据我所知,你还需要定义 “drawHitFunc”:

circle1.setDrawHitFunc(function (canvas) { 
       var context2 = canvas.getContext(); 
       context2.beginPath(); 
       context2.arc(100, 100, this.getRadius(), 0, 2 * Math.PI, false); 
       context2.closePath(); 
       canvas.fillStroke(this); 
      }); 

例子:http://jsfiddle.net/lavrton/4DJdU/1/

+0

伟大工程,太感谢了。 – hncl 2013-03-22 01:48:50

0

没有,你只需要创建自定义的形状时,正确结构drawFunc。这里有一个例子:

http://www.html5canvastutorials.com/kineticjs/html5-canvas-kineticjs-shape-tutorial/

的问题是,你使用context.stroke()。你需要使用canvas.stroke(this);

任何时候,你实际呈现的东西,像笔触和填充,你需要使用画布渲染对象,因为它吸引到两个场景图(你所看到的)和一个专门的命中图(用于事件检测)

文档:

http://kineticjs.com/docs/symbols/Kinetic.Canvas.php