转载地址: http://blog.youkuaiyun.com/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禁用浏览器的滚动条即可。