单击拉斐尔中的路径
Click through path in Raphael
我定义了一个包含多个元素的不透明度为 0 的路径。这样做的目的是因为当鼠标在该路径上时,该元素出现(或者如果我们离开该路径则消失)。我的问题是因为路径位于 canvas 之上,我无法单击那些元素并期望能够处理事件。
处理该问题的最佳策略是什么?
- 我试着把路径放在back();但是当我将鼠标悬停在一个元素上时,就像我离开了路径一样。
- 我试着把元素放在最上面,但结果和以前一样。
- 使用函数 ispointinsidepath() 然后获取我单击的点的坐标似乎很挑剔,因为元素大小不是常数。
您可以在每个元素上放置处理程序,并以这种方式处理它。如果使用 Snap 而不是 Raphael 甚至可能会稍微容易一些,因为那时您可以使用组(并且不需要多个事件处理程序),但假设 Raphael 是您可以这样做的要求...
var r = paper.rect(50,50,200,200).attr({ fill: 'blue', opacity: '0'}).hover( hoverover, hoverout )
var c1 = paper.circle(100,100,30).attr({ fill: 'red' }).click( clickFunc ).hover( hoverover, hoverout)
var c2 = paper.circle(200,200,30).attr({ fill: 'blue' }).click( clickFunc ).hover( hoverover, hoverout )
function hoverover() { r.attr({ opacity: 1 } ) }
function hoverout() { r.attr({ opacity: 0 } ) }
function clickFunc() { alert('clicked')}
我定义了一个包含多个元素的不透明度为 0 的路径。这样做的目的是因为当鼠标在该路径上时,该元素出现(或者如果我们离开该路径则消失)。我的问题是因为路径位于 canvas 之上,我无法单击那些元素并期望能够处理事件。
处理该问题的最佳策略是什么?
- 我试着把路径放在back();但是当我将鼠标悬停在一个元素上时,就像我离开了路径一样。
- 我试着把元素放在最上面,但结果和以前一样。
- 使用函数 ispointinsidepath() 然后获取我单击的点的坐标似乎很挑剔,因为元素大小不是常数。
您可以在每个元素上放置处理程序,并以这种方式处理它。如果使用 Snap 而不是 Raphael 甚至可能会稍微容易一些,因为那时您可以使用组(并且不需要多个事件处理程序),但假设 Raphael 是您可以这样做的要求...
var r = paper.rect(50,50,200,200).attr({ fill: 'blue', opacity: '0'}).hover( hoverover, hoverout )
var c1 = paper.circle(100,100,30).attr({ fill: 'red' }).click( clickFunc ).hover( hoverover, hoverout)
var c2 = paper.circle(200,200,30).attr({ fill: 'blue' }).click( clickFunc ).hover( hoverover, hoverout )
function hoverover() { r.attr({ opacity: 1 } ) }
function hoverout() { r.attr({ opacity: 0 } ) }
function clickFunc() { alert('clicked')}