HTML5 Canvas鼠标悬停在画布上的事件

时间:2013-05-03 19:33:33

标签: html5 image audio canvas

我正在将图像加载到canvas元素+播放声音文件 我想在画布上的图像上移动鼠标时再次播放声音。 我知道如何在画布下添加一个按钮,但我不知道如何通过将鼠标移到图像上来做到这一点。

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:2)

您需要使用javascript来创建鼠标悬停事件...请查看此示例

function RefreshMouseEvents( ElementId ) 
{
    FireEvent( ElementId, 'mouseover' );
    setTimeout( "TriggerMouseEvent( '" + ElementId + "', '" + event.clientX + "', '" + event.clientY + "' )", 1 );
}

function TriggerMouseEvent( ElementId, MouseXPos, MouseYPos )
{
    if( IsMouseOver( ElementId, (1*MouseXPos), (1*MouseYPos) ) )
        FireEvent( ElementId, 'mouseover' );
    else    
        FireEvent( ElementId, 'mouseout' );
}

function IsMouseOver( ElementId, MouseXPos, MouseYPos )
{
    if( document.getElementById(ElementId) != null )    
    {
        var Element = document.getElementById(ElementId);   
        var Left  = Element.getBoundingClientRect().left, 
            Top   = Element.getBoundingClientRect().top,
            Right = Element.getBoundingClientRect().right,
            Bottom  = Element.getBoundingClientRect().bottom;       
        return ( (MouseXPos >= Left) && (MouseXPos <= Right) && (MouseYPos >= Top) && (MouseYPos <= Bottom))    
    }
    else
        return false;
}

function FireEvent( ElementId, EventName )
{
    if( document.getElementById(ElementId) != null )    
    {   
        if( document.getElementById( ElementId ).fireEvent ) 
        {
            document.getElementById( ElementId ).fireEvent( 'on' + EventName );     
        }
        else 
        {   
            var evObj = document.createEvent( 'Events' );
            evObj.initEvent( EventName, true, false );
            document.getElementById( ElementId ).dispatchEvent( evObj );
        }
    }
}

我已经为下面的初学者提供了一些教程链接。如果您觉得有帮助,请标记此答案。

HTML5,Javascript, & CSS

Beginners Guide to HTML5 Canvas and JS