【问题标题】:How to detect when mouse is over HTML layer over Flash movie?如何检测鼠标何时在 Flash 电影上的 HTML 层上?
【发布时间】:2011-01-04 11:01:04
【问题描述】:

我有一个嵌入在 HTML 页面中的 Flash 电影,该页面在电影顶部的图层中有一个 DIV。 Flash 影片根据鼠标在影片上的位置滚动。客户端希望在鼠标悬停在 DIV 上时停止滚动。我尝试过使用 mouseLeave 事件,但这不是由 DIV 触发的。

当鼠标悬停在 DIV 上时,Flash 影片是否可以检测到?

Flash 电影是使用 Flash CS4 和 AS3 开发的。

这是 DIV 标签:

<div style="position:absolute;top:0;left:0;width:1024;background:#fff;font-size:24px;z-order:2">
some text
</div>

【问题讨论】:

    标签: html flash actionscript-3 actionscript mouse


    【解决方案1】:

    MOUSE_LEAVE 事件不起作用,因为即使鼠标悬停在 div 上,它仍然在 SWF 的边界区域内。您必须在 Flash 中使用 ExternalInterface 来注册一个可用于 javascript 的函数,然后当鼠标悬停在 div 上时调用该函数。 Flash 功能关闭滚动。

    在 Flash 中:

    import flash.external.ExternalInterface;
    function stopScrolling() {
        // stop scrolling
    }
    ExternalInterface.addCallback('stopFlashScrolling', stopScrolling);
    

    在 Javascript 中:

    document.getElementById('theDiv').onmouseover = function(e) {
        MySWF.stopFlashScrolling();
    }
    

    MySWF 是您的 SWF 的 ID。

    【讨论】:

      【解决方案2】:

      Flash 电影(通常)总是具有最高的 z-index。您是否尝试过添加:

      <param name="wmode" value="transparent"> 
      

      到您的嵌入代码?

      【讨论】:

      • 轻微迂腐 - 嵌入式 Flash 电影不使用最高 z-index,它们直接渲染到屏幕,绕过浏览器。将wmode 设置为transparentopaque 会使它们在浏览器上下文中呈现,从而使它们易于堆叠和覆盖
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      相关资源
      最近更新 更多