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);
- }
- }
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.addCallback("jsWheelZoom", jsWheelZoom);
- ExternalInterface.call("addMouseWheelListener");
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;
- }
- }
- }