确定游标是否在Raphael.js中的某个元素之上

时间:2012-10-17 19:46:06

标签: if-statement hover raphael

如何判断光标是否在Raphael.js中的某个元素上?

if(mouse_is_over){
   //do this 
}
else{   
   //do this 
}

理想情况下,我想测试鼠标是否超过一个名为'c'的圆圈。

谢谢!

1 个答案:

答案 0 :(得分:3)

我强烈建议使用Raphael的Element.data方法将您的私有圈特定数据与每个项目相关联,然后在悬停处理程序中对该数据进行操作或对其进行操作(手动检测与getElementByPoint的交集)在鼠标悬停处理程序中可能很昂贵)。您可以使用data存储任何内容:

var circle = paper.circle( ... );
circle.data( 'name', "My name is Jonas." ); // store a string!
circle.data( 'dataset', { ... } );          // store an object literal!
circle.data( 'click_handler', function()
    {
        console.log("Store a handler function!" );
    } );

此时,游戏变得非常容易。你是否使用Raphael的内置悬停处理......

circle.hover( function()
    {
        console.log("Just moved over '" + this.data("name") + "'" );
    }, function()
    {
        console.log("Just moved out of '" + this.data("name") + "'" );
    } );

...或者是一个鼠标悬停事件,例如jQuery ...

//  Don't forget to translate page coordinates relative to the paper!
var element = paper.getElementByPoint( x, y );
if ( element && element.data("name") == "c" )
{
    // bah, humbug
}

......逻辑是一样的。只需查询与您的元素相关联的应用程序数据并执行操作即可。

我碰巧已经有了一个可怕的小脚本,可以在随机位置激活圈子,我retrofitted it可以适应你的场景。