Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML5画布鼠标悬停在画布上的事件_Html_Image_Audio_Canvas - Fatal编程技术网

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

HTML5画布鼠标悬停在画布上的事件,html,image,audio,canvas,Html,Image,Audio,Canvas,我正在将图像加载到画布元素并播放声音文件 我想在画布上的图像上移动鼠标时再次播放声音。 我知道如何在画布下添加一个按钮,但我不知道如何将鼠标移到图像上 有人能帮我吗???您需要使用javascript创建鼠标悬停事件…查看此示例 function RefreshMouseEvents( ElementId ) { FireEvent( ElementId, 'mouseover' ); setTimeout( "TriggerMouseEvent( '" + ElementId

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


有人能帮我吗???

您需要使用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 );
        }
    }
}
函数刷新鼠标事件(ElementId)
{
FireEvent(ElementId,“鼠标悬停”);
setTimeout(“TriggerMouseEvent(“+ElementId+”,“+event.clientX+”,“+event.clientY+”),1);
}
函数TriggerMouseEvent(ElementId、MouseXPos、MouseYPos)
{
if(IsMouseOver(ElementId,(1*MouseXPos),(1*MouseYPos)))
FireEvent(ElementId,“鼠标悬停”);
其他的
FireEvent(ElementId,“mouseout”);
}
函数IsMouseOver(ElementId、MouseXPos、MouseYPos)
{
if(document.getElementById(ElementId)!=null)
{
var Element=document.getElementById(ElementId);
var Left=Element.getBoundingClientRect().Left,
Top=Element.getBoundingClientRect().Top,
右=元素。getBoundingClientRect()。右,
Bottom=Element.getBoundingClientRect().Bottom;

return((MouseXPos>=Left)&&&(MouseXPos=Top)&&&(MouseYPos)谢谢。我对javascript非常陌生,也许你可以解释一下这到底是做什么的?或者你知道一个很好的教程吗?我在答案中提供了一些有用的教程来帮助你入门。