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

来源:互联网 发布:docker alpine java 编辑:程序博客网 时间:2024/06/07 15:41

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

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

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

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

js代码

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 监听方法和回调方法 ,方法如下


ExternalInterface.addCallback("jsWheelZoom", jsWheelZoom);
ExternalInterface.call("addMouseWheelListener");
private function jsWheelZoom(o:Object):void{var e:MouseEvent = new MouseEvent(MouseEvent.MOUSE_WHEEL,true);      e.delta = -(o.delta);    onWheelZoom(e); }private function onWheelZoom(e:MouseEvent):void{if(e.delta>2)  {  this.camera.verticalScrollPosition += 1;if(this.camera.verticalScrollPosition > this.camera.maxVerticalScrollPosition){this.camera.verticalScrollPosition = this.camera.maxVerticalScrollPosition}}  if(e.delta<-2)  {  this.camera.verticalScrollPosition -= 1;     if(this.camera.verticalScrollPosition < 0){this.camera.verticalScrollPosition = 0;}             }  } 




	
				
		
原创粉丝点击