把flash放在html页面上后, 在flash上面使用鼠标滚轮功能, 有时浏览器的滚动条也会跟着一起滚动。
可以在鼠标经过flash舞台时使用JS函数禁用浏览器的滚动事件,当鼠标移出舞台时再恢复。
- <html>
- <head>
- <title>自定义鼠标滚轮的处理函数</title>
- <script>
- 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;
- }
- }
- }
- </script>
- </head>
- <body>
- <p>123<p>123<p>
-
- <a href="#" onClick="EnableWheelScroll(true);">enable</a> <p>
- <a href="#" onClick="EnableWheelScroll(false);">disable</a> <p>
-
- <div id="space" style="height:800;"></div>
- </body>
- </html>
<html>
<head>
<title>自定义鼠标滚轮的处理函数</title>
<script>
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;
}
}
}
</script>
</head>
<body>
<p>123<p>123<p>
<a href="#" onClick="EnableWheelScroll(true);">enable</a> <p>
<a href="#" onClick="EnableWheelScroll(false);">disable</a> <p>
<div id="space" style="height:800;"></div>
</body>
</html>
- public function onMouseOver(evt:MouseEvent): void
- {
- ExternalInterface.call("EnableWheelScroll", false);
- }
-
- public function onMouseOut(evt:MouseEvent): void
- {
- ExternalInterface.call("EnableWheelScroll", true);
- }
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禁用浏览器的滚动条即可。