flex <param name="wmode" value="transparent">鼠标滚轮控制问题

1、网页嵌入flash后会覆盖html dom 元素,使用wmode为transparent时可以解决覆盖问题,因为此时它已经透明了。

2、transparent带来另一个问题,鼠标滚轮控制不了flash中的滚动条。

3、思路:通过js捕获鼠标滚轮事件,js调用flash方法传递滚轮->flash组件调用滚轮事件传递的参数。

eg:使用js捕获鼠标滚轮事件后控制flex dataGrid组件的滚动条

js代码

[javascript] view plain copy print ?
  1. function addMouseWheelListener(){ 
  2.     var flash = thisMovie("videoControl"); 
  3.     var ua = navigator.userAgent; 
  4.     if(ua.indexOf("Firefox") > -1){ 
  5.            flash.addEventListener('DOMMouseScroll',onWheelZoom,false);  
  6.     }else if(ua.indexOf("MSIE") == -1){ 
  7.         flash.addEventListener('mousewheel',onWheelZoom,false);  
  8.     }else
  9.         flash.attachEvent('onmousewheel',onWheelZoom);  
  10.     } 
  11.  
  12. function onWheelZoom(event){   
  13.     var app = window.document["videoControl"];   
  14.     if (app) {   
  15.         var o= {delta: event.wheelDelta} 
  16.         thisMovie("videoControl").jsWheelZoom(o);   
  17.     }   
  18. }   
function addMouseWheelListener(){
	var flash = thisMovie("videoControl");
	var ua = navigator.userAgent;
	if(ua.indexOf("Firefox") > -1){
	       flash.addEventListener('DOMMouseScroll',onWheelZoom,false); 
    }else if(ua.indexOf("MSIE") == -1){
        flash.addEventListener('mousewheel',onWheelZoom,false); 
    }else{
    	flash.attachEvent('onmousewheel',onWheelZoom); 
    }
}

function onWheelZoom(event){  
    var app = window.document["videoControl"];  
    if (app) {  
        var o= {delta: event.wheelDelta}
        thisMovie("videoControl").jsWheelZoom(o);  
    }  
}  

flex代码

在初始化时候注册js 监听方法和回调方法 ,方法如下


  1. ExternalInterface.addCallback("jsWheelZoom", jsWheelZoom); 
ExternalInterface.addCallback("jsWheelZoom", jsWheelZoom);
  1. ExternalInterface.call("addMouseWheelListener"); 
ExternalInterface.call("addMouseWheelListener");
 
  1. private function jsWheelZoom(o:Object):void 
  2.     var e:MouseEvent = new MouseEvent(MouseEvent.MOUSE_WHEEL,true);   
  3.     e.delta = -(o.delta); 
  4.     onWheelZoom(e);  
  5. private function onWheelZoom(e:MouseEvent):void 
  6.     if(e.delta>2)   
  7.     {   
  8.         this.camera.verticalScrollPosition += 1
  9.         if(this.camera.verticalScrollPosition > this.camera.maxVerticalScrollPosition) 
  10.         { 
  11.             this.camera.verticalScrollPosition = this.camera.maxVerticalScrollPosition 
  12.         } 
  13.     }   
  14.     if(e.delta<-2)   
  15.     {   
  16.         this.camera.verticalScrollPosition -= 1;      
  17.         if(this.camera.verticalScrollPosition < 0
  18.         { 
  19.             this.camera.verticalScrollPosition = 0
  20.         }              
  21.     }   
  22. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值