好的,首先我遇到了 2 个默认 wmode 为“window”的问题。我的网页导航菜单将位于我的 flex/flash 应用程序下方。另一个问题是在 Flash 应用程序中滚动时,整个页面都会滚动。
我将 wmode 更改为“不透明”,这解决了导航菜单的问题,因此现在它们显示在 Flash 应用程序上方。太好了,但现在我在 Flash 应用程序中根本没有滚动。
我意识到这是一个大问题,但我似乎找不到解决这两个(实际上是 2.5 个问题)这两个问题的解决方案。
我想 A) 让导航链接显示在 Flash 应用程序上方,这样它们就不会被隐藏; B) 允许在 Flash 应用程序内滚动;和 C) 如果鼠标悬停在 Flash 应用程序上,则阻止网页滚动。
如果你们有任何想法,那就太棒了。 :) 提前致谢。
最佳答案
我写的是什么意思:
wmode=transparent & wmode=opaque behave the same as far as mousewheel.
在大多数浏览器中,这两种模式都不会捕获 flash 中的 MOUSE_WHEEL
事件(我相信 IE 是唯一能够正确捕获 MOUSE_WHEEL
事件的浏览器)。
解决方案是通过 JavaScript 监听 MOUSE_WHEEL
事件:
//ie handles wmode=transparent correctly
//every other browser uses addEventListener
if ( !document.attachEvent )
{
//console.log('attached');
window.addEventListener('DOMMouseScroll', scrollListener, false);
window.addEventListener('mousewheel', scrollListener, false);
}
scrollListener( e )
{
var delta
if ( e.wheelDelta )
{
delta = e.wheelDelta / 40;
}
else if ( e.detail )
{
delta = -e.detail;
}
//do stuff with delta
}
然后您需要使用 ExternalInterface.addCallback
为 JS 设置回调以提醒 flash 发生了 MOUSE_WHEEL
事件。
wmode=transparent
和 wmode=opaque
也有其他鼠标事件的问题。
关于flash - wmode ="opaque"问题和 wmmode ="window"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5477426/