关于flash的mousewheel事件
发布时间:2020-12-15 17:25:45 所属栏目:百科 来源:网络整理
导读:flash在wmode为opaque或transparent时,AS编写的鼠标滚轮事件失效。在此情况下,只能通过外部的JS实现事件绑定。我的实现代码如下:(已通过firefox,chrome,IE8测试) function?registMousewheel(id){????????????????????????????????function?_onmousewhee
flash在wmode为opaque或transparent时,AS编写的鼠标滚轮事件失效。在此情况下,只能通过外部的JS实现事件绑定。我的实现代码如下:(已通过firefox,chrome,IE8测试) function?registMousewheel(id){ ???????????????? ????????????????function?_onmousewheel(e)?{ ????????????????????var?target?=?e.srcElement?||?e.target; ????????????????????if(mousewheelHandler.containsTarget(target)){ ????????????????????????var?delta?=?0; ????????????????????????if(e.wheelDelta?){ ????????????????????????????delta?=?e.wheelDelta?/?120;???????????????????????? ????????????????????????}else?if(e.detail){ ????????????????????????????delta?=?-e.detail; ????????????????????????} ????????????????????????if?(delta?!=?0)?{???????????????????????????? ????????????????????????????target.mousewheelHandler?&&?target.mousewheelHandler(delta); ????????????????????????} ????????????????????????e.preventDefault?&&?e.preventDefault(); ????????????????????} ????????????????????return?false; ????????????????} ???????????????? ????????????????if?(typeof?mousewheelHandler?==?"undefined")?{ ????????????????????var?_mousewheelHandler?=?{ ????????????????????????targets:{},????????????????????????containsTarget:function(target){ ????????????????????????????return?target.id?in?this.targets; ????????????????????????},????????????????????????regist:function(el)?{ ????????????????????????????if(typeof?el=="string"){ ????????????????????????????????el?=?document.getElementById(el); ????????????????????????????} ????????????????????????????if?(el?==?null)?return; ????????????????????????????this.targets[el.id]?=?el; ????????????????????????????if(typeof?window.attachEvent!="undefined"){???????????????????????????????? ????????????????????????????????document.attachEvent("onmousewheel",_onmousewheel); ????????????????????????????}else?if(typeof?window.addEventListener!="undefined"){???????????????????????????????? ????????????????????????????????document.addEventListener("DOMMouseScroll",_onmousewheel,false); ????????????????????????????????document.addEventListener("mousewheel",false); ????????????????????????????} ????????????????????????},????????????????????????unregistAll:function(){ ????????????????????????????if(typeof?window.attachEvent!="undefined"){???????????????????????? ????????????????????????????????document.detachEvent("onmousewheel",_onmousewheel); ????????????????????????????}else?if(typeof?window.addEventListener!="undefined"){???????????????????????? ????????????????????????????????document.removeEventListener("DOMMouseScroll",false); ????????????????????????????????document.removeEventListener("mousewheel",false); ????????????????????????????} ????????????????????????????this.targets?=?{}; ????????????????????????} ????????????????????}; ???????????????????? ????????????????????mousewheelHandler?=?_mousewheelHandler; ????????????????} ???????????????? ????????????????mousewheelHandler.regist(id); ????????????} 可以将上面的JS代码写在AS脚本中,当flash加载完成时直接调用。 值得注意的是,DOMMouseScroll只适用于firefox且只能绑定在document上。 最后,比较容易犯错的一点,flash提供的回调函数名称一定不要与事件名称相同,如onmousewheel,onclick等,这样在IE下会提示找不到方法的错误,切记! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |