`

用 javascript + actionScript 解决透明的flash在firefox下滚轮失效的问题!

阅读更多

1、在flash的宿主文件(HTML)下增加如下代码:

[javascript] view plain copy
  1. <mce:script language= "JavaScript"  type= "text/javascript" ><!--  
  2.     if (!(document.attachEvent)) {  
  3.         window.addEventListener("DOMMouseScroll" , handleWheel,  false );  
  4.     }  
  5.     function  handleWheel(event) {  
  6.         var  app = window.document[ "${application}" ];  
  7.         if  (app) {  
  8.             var  o = {x: event.screenX, y: event.screenY,  
  9.                 delta: event.detail,  
  10.                 ctrlKey: event.ctrlKey, altKey: event.altKey,  
  11.                 shiftKey: event.shiftKey}  
  12.              
  13.             app.handleWheel(o);  
  14.         }  
  15.     }  
  16. // --></mce:script>   

注,${application} 为FLEX站点工程下XXX.template的参数,如为其他文件,请改为flash对象的ID值。

 

2、在flash程序初始化完后,执行此代码:

[javascript] view plain copy
  1. ExternalInterface.addCallback( "handleWheel" , handleWheel);  

注:可以把这行代码加入初始化完成的事件回调函数中执行,此函数注册来自javascript函数"handleWheel"的事件,回调函数是handleWheel,此函数代码如下:

 

3、在上面这句代码的函数外,加入此函数:

[javascript] view plain copy
  1. public   function  handleWheel(event:Object):  void  {  
  2.     var  obj:InteractiveObject =  null ;  
  3.     var  tmpGlbPoint:Point =  new  Point( this .mouseX,  this .mouseY);  
  4.     var  objects:Array =  this .getObjectsUnderPoint(tmpGlbPoint);  
  5.     for  ( var  i: int  = objects.length - 1; i >= 0; i--) {  
  6.         if  (objects[i] is InteractiveObject) {  
  7.             obj = objects[i] as InteractiveObject;  
  8.             break ;  
  9.         } else  {  
  10.             if  (objects[i] is Shape && (objects[i] as Shape).parent) {  
  11.                 obj = (objects[i] as Shape).parent;  
  12.                 break ;  
  13.             }  
  14.         }  
  15.     }  
  16.     if  (obj) {  
  17.         var  tmpP:Point = obj.globalToLocal(tmpGlbPoint);  
  18.         var  mEvent:MouseEvent =  new  MouseEvent(MouseEvent.MOUSE_WHEEL,  true false ,  
  19.             tmpP.x, tmpP.y, obj,  
  20.             event.ctrlKey, event.altKey, event.shiftKey,  
  21.             false , -Number(event.delta));  
  22.         obj.dispatchEvent(mEvent);  
  23.     }  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics