改写jtopo滚轮缩放代码

来源:互联网 发布:拜年视频制作软件 编辑:程序博客网 时间:2024/05/21 05:17

问题

原生的jtopo滚轮缩放在mac上用触控板触发时,会出现疯狂缩放的现象,同时还会触发浏览器的默认事件(页面前进、页面后退)

参考

地址:https://adom.as/javascript-mouse-wheel/

/** This is high-level function. * It must react to delta being more/less than zero. */function handle(delta) {        if (delta < 0)        …;        else        …;}/** Event handler for mouse wheel event. */function wheel(event){        var delta = 0;        if (!event) /* For IE. */                event = window.event;        if (event.wheelDelta) { /* IE/Opera. */                delta = event.wheelDelta/120;        } else if (event.detail) { /** Mozilla case. */                /** In Mozilla, sign of delta is different than in IE.                 * Also, delta is multiple of 3.                 */                delta = -event.detail/3;        }        /** If delta is nonzero, handle it.         * Basically, delta is now positive if wheel was scrolled up,         * and negative, if wheel was scrolled down.         */        if (delta)                handle(delta);        /** Prevent default actions caused by mouse wheel.         * That might be ugly, but we handle scrolls somehow         * anyway, so don't bother here..         */        if (event.preventDefault)                event.preventDefault();    event.returnValue = false;}/** Initialization code.  * If you use your own event management code, change it as required. */if (window.addEventListener)        /** DOMMouseScroll is for mozilla. */        window.addEventListener('DOMMouseScroll', wheel, false);/** IE/Opera. */window.onmousewheel = document.onmousewheel = wheel;

改变

修改后不会出现疯狂缩放,同时也不会触发浏览器事件

                    // 改写 滚轮缩放                    var event = a;                    // retrieve delta                    var delta = 0;                    if (event.wheelDelta) {                        /* IE/Opera. */                        delta = event.wheelDelta / 120;                    } else if (event.detail) {                        /* Mozilla case. */                        // In Mozilla, sign of delta is different than in IE.                        // Also, delta is multiple of 3.                        delta = -event.detail / 3;                    }                    // If delta is nonzero, handle it.                    // Basically, delta is now positive if wheel was scrolled up,                    // and negative, if wheel was scrolled down.                    if (delta !== 0) {                        // calculate the new scale                        var scale = mytest.scene.scaleX;                        var zoom = delta / 10;                        if (delta < 0) {                            zoom = zoom / (1 - zoom);                        }                        scale *= 1 + zoom;                        // apply the new scale                        mytest.scene.zoom(scale, scale);                    }                    // Prevent default actions caused by mouse wheel.                    event.preventDefault();                //     原滚轮缩放                //    a.preventDefault();                //    n.dispatchEventToScenes("mousewheel", b),  // 注意: 这段代码注释的话将不会触发jtopo的mousewheel事件                //        n.dispatchEvent("mousewheel", b), // scene                 //    null != n.wheelZoom && (a.preventDefault ? a.preventDefault() : (a = a || window.event, a.returnValue = !1), 1 == n.eagleEye.visible && n.eagleEye.update()) // 鹰眼的缩放