加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

关于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下会提示找不到方法的错误,切记!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读