用 javascript + actionScript 解决透明的flash在firefox下滚轮失效的问题!(转) 您所在的位置:网站首页 Actionscript转js 用 javascript + actionScript 解决透明的flash在firefox下滚轮失效的问题!(转)

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

2023-08-30 05:51| 来源: 网络整理| 查看: 265

在透明的flash在firefox下滚轮功能会失效,只有firefox有此问题,其他浏览器没有碰到过,这是因为firefox没有把鼠标的滚轮事件传给flash的原因。我们可以这样来解决:

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

window.addEventListener("DOMMouseScroll", handleWheel, false); } function handleWheel(event) { var app = window.document["${application}"]; if (app) { var o = {x: event.screenX, y: event.screenY, delta: event.detail, ctrlKey: event.ctrlKey, altKey: event.altKey, shiftKey: event.shiftKey} app.handleWheel(o); } }// -->

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

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

ExternalInterface.addCallback("handleWheel", handleWheel); 

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

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

public function handleWheel(event:Object): void { var obj:InteractiveObject = null; var tmpGlbPoint:Point = new Point(this.mouseX, this.mouseY); var objects:Array = this.getObjectsUnderPoint(tmpGlbPoint); for (var i:int = objects.length - 1; i >= 0; i--) { if (objects[i] is InteractiveObject) { obj = objects[i] as InteractiveObject; break; } else { if (objects[i] is Shape && (objects[i] as Shape).parent) { obj = (objects[i] as Shape).parent; break; } } } if (obj) { var tmpP:Point = obj.globalToLocal(tmpGlbPoint); var mEvent:MouseEvent = new MouseEvent(MouseEvent.MOUSE_WHEEL, true, false, tmpP.x, tmpP.y, obj, event.ctrlKey, event.altKey, event.shiftKey, false, -Number(event.delta)); obj.dispatchEvent(mEvent); }}

 

OK了,编译完,用firefox打开看看!!可以了吧!!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有