加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 07:33:30 所属栏目:百科 来源:网络整理
导读:本质上,我有滚动鼠标滚轮的Flash内容.它可以正常工作,除非浏览器中有其他内容,以便浏览器的滚动条被启用 – 在这种情况下,浏览器窗口和SWF都在鼠标滚轮上滚动.有没有办法纠正这种行为? 类似的问题在这里问: disable mouse wheel scrolling while cursor ov
本质上,我有滚动鼠标滚轮的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读