转载地址: http://blog.csdn.net/xiang08/article/details/4541538
html代码:
<html> <head> <title>自定义鼠标滚轮的处理函数</title> <mce:script type="text/javascript"><!-- var OsObject = function () { var ua = navigator.userAgent.toLowerCase(); var isOpera = ua.indexOf("opera") > -1, isIE = !isOpera && ua.indexOf("msie") > -1, isIE7 = !isOpera && ua.indexOf("msie 7") > -1; return { isIE : isIE, isIE6 : isIE && !isIE7, isIE7 : isIE7, isFirefox : ua.indexOf("firefox")>0, isSafari : ua.indexOf("safari")>0, isCamino : ua.indexOf("camino")>0, isGecko : ua.indexOf("gecko/")>0 }; }(); function disWheel(evt) { if(!evt) evt=window.event; var delta=0; if(OsObject.isFirefox) { delta = -evt.detail/2; //alert(delta); // 可以调用Flash接口,让flash响应滚轮 if(evt.preventDefault) evt.preventDefault(); evt.returnValue = false; } else if(OsObject.isIE) { delta = evt.wheelDelta/60; //alert(delta); // 可以调用Flash接口,让flash响应滚轮 return false; } } EnableWheelScroll = function (enable) { if(enable) { if(OsObject.isFirefox) { window.removeEventListener('DOMMouseScroll', disWheel, false); } else if(OsObject.isIE) { window.onmousewheel = document.onmousewheel = function(){return true}; } } else // disable { if(OsObject.isFirefox) { window.addEventListener('DOMMouseScroll', disWheel, false); } else if(OsObject.isIE) { window.onmousewheel = document.onmousewheel = disWheel; } } } // --></mce:script> </head> <body> <p>123<p>123<p> <a href="#" mce_href="#" onClick="EnableWheelScroll(true);">enable</a> <p> <a href="#" mce_href="#" onClick="EnableWheelScroll(false);">disable</a> <p> <div id="space" style="height:800;"></div> </body> </html>
as3代码:
public function onMouseOver(evt:MouseEvent): void { ExternalInterface.call("EnableWheelScroll", false); } public function onMouseOut(evt:MouseEvent): void { ExternalInterface.call("EnableWheelScroll", true); }
不过,这样也是有缺陷的,当flash设置为透明(wmode="transparent"),且flash全屏播放时,这里自定义的滚动函数很可能会不响应。这时需要在舞台上注册MouseEvent.MOUSE_WHEEL事件处理函数。
如果flash不需要透明属性,则可以直接在舞台上注册MouseEvent.MOUSE_WHEEL事件处理函数,然后使用js禁用浏览器的滚动条即可。