flash – 如何在AS3中停止同时浏览器和SWF鼠标滚轮滚动?

前端之家收集整理的这篇文章主要介绍了flash – 如何在AS3中停止同时浏览器和SWF鼠标滚轮滚动?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
本质上,我有滚动鼠标滚轮的Flash内容.它可以正常工作,除非浏览器中有其他内容,以便浏览器的滚动条被启用 – 在这种情况下,浏览器窗口和SWF都在鼠标滚轮上滚动.有没有办法纠正这种行为?

类似的问题在这里问:

disable mouse wheel scrolling while cursor over flex app?

其中引用了关于这里的文章

http://www.spikything.com/blog/index.php/2009/11/27/stop-simultaneous-flash-browser-scrolling/

解决方案不适用于所有浏览器!虽然它适用于某些Windows浏览器,但在Mac OS X上它根本不起作用 – 它在Firefox中注册鼠标滚轮事件,但在Chrome和Safari中并没有被触发.

现在我知道(按照官方的Adobe InteractiveObject文档)鼠标滚轮据称只在Windows系统上受支持,但Mac OS X上的默认情况仍然被触发.这个同时滚动的错误不支持的原因吗?

编辑:在上面的解决方案中添加更多信息…

请注意,上述解决方案基本上使用ExternalInterface将以下JavaScript发送到“eval”函数

var browserScrolling;

function allowBrowserScroll(value) {
    browserScrolling = value;
}
function handle(delta) {
    if (!browserScrolling) {
        return false;
    }
    return true;
}
function wheel(event) {
    var delta = 0;
    if (!event) {
        event = window.event;
    }
    if (event.wheelDelta) {
        delta = event.wheelDelta / 120;
    } else if (event.detail) {
        delta = -event.detail / 3;
    }
    if (delta) {
        handle(delta);
    }
    if (!browserScrolling) {
        if (event.preventDefault) {
            event.preventDefault();
        }
        event.returnValue = false;
    }
}
if (window.addEventListener) {
    window.addEventListener('DOMMouseScroll',wheel,false);
}
window.onmousewheel = document.onmousewheel = wheel;
allowBrowserScroll(true);

这只猫至少在正确的路径上,还是有更好的(即完全功能的)解决方案?

解决方法

我创建了一个小的lib,为您处理一切.它在默认的Flash播放器插件,Pepper闪存和MAC-OS上完美的工作(就我的测试而言).并且您不需要将任何.js文件添加到您的HTML文件

GIhub repo

猜你在找的Flash相关文章