ArcGIS Flex在Firefox和Chrome下实现鼠标滚轮缩放

问题:在Firefox和Chrome下无法通过鼠标滚轮对地图进行缩放

 

原因:为了避免弹窗div被flash遮挡,wmode必须设置为transparent模式,但是这种模式xiaFirefox和chrome浏览器的鼠标滚轮事件无法触发

 

解决方案:通过javascript将鼠标滚轮事件传入到flash中,触发flash的地图事件

 

swfobject.embedSWF("***.swf", divDom.id, "100%", "100%", "10.0.0", "***.swf", flashvars, flashParams, attributes, function(e){

        if(e.success == true){

this.mapObject = e.ref;

/** 判断浏览器类型,以便于让地图支持鼠标滚轮缩放事件

* 目前只完成firefox和chrome支持,IE不需要,其他浏览器暂无测试

**/

                if (Ext.isGecko && window.addEventListener) {

                    /** Mozilla的基于DOM的滚轮事件 * */

                    window.addEventListener('DOMMouseScroll', onWheelAction.createDelegate(e.ref), false);

                }else if(Ext.isChrome){

window.onmousewheel = onWheelAction.createDelegate(e.ref);

}

}

        }

.createDelegate(this));

 

 

 

// 鼠标滚轮事件句柄

onWheelAction : function(event) {

var eventObj = {

bubbles : event.bubbles,

buttonDown : event.buttonDown,

cancelable : event.cancelable,

altKey : event.altKey,

ctrlKey : event.ctrlKey,

localX : event.clientX,

localY : event.clientY,

shiftKey : event.shiftKey

};

if (Ext.isGecko) {

// 兼容Mozilla.In Mozilla, sign of delta is different than in IE.

eventObj.delta = -event.detail;

} else {// IE,Opera,Chrome

eventObj.delta = event.wheelDelta;

}

 

this.dispatchMouseWheelEventAction(eventObj);

}


 

/** Flash中的事件处理,as函数

**/

 

protected function init(event:FlexEvent):void

{


//监听js鼠标滚轮事件,实现plugin形式插件的鼠标滚轮操作

var playType:String = flash.system.Capabilities.playerType;

if(playType=="ActiveX"){//IE 浏览器

}else if(playType=="PlugIn"){

//解决firefox和chrome不能通过鼠标滚轮缩放的问题

ExternalInterface.addCallback("dispatchMouseWheelEventAction",dispatchMouseWheelEvent);

}

}


//将鼠标滚轮事件发送给需要监听的控件

public function dispatchMouseWheelEvent(event:Object):void{

var wheelEvent:MouseEvent = new MouseEvent(MouseEvent.MOUSE_WHEEL,event.bubbles,event.cancelable,event.localX,

event.localY,null,event.ctrlKey,event.altKey,event.shiftKey,event.buttonDown,Number(event.delta));

map.dispatchEvent(wheelEvent);

}


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值