发本来想要屏蔽右键菜单,无意间发现createjs的一个BUG。
移动端,点击右键之后,stage.mouseX和stage.mouseY会一直是1。如果使用了stage.mouseX和stage.mouseY就会出错。pc端没有这个bug。
如果把_updatePointerPosition函数中的
if (this._primaryPointerID == null || id === -1) { this._primaryPointerID = id; }
改成
if (this._primaryPointerID == null || this._primaryPointerID==-1 || id === -1) { this._primaryPointerID = id; }
官方源文件就是这么改的,可以解决这个bug,但是又会触发新的bug。按钮点击切换的时候会有问题。
有一个变通的方法,就是使用e.stageX代替stage.mouseX。
如果启用了touch,本来应该响应touchstar等touch事件,但是按下右键时,会触发mousedown事件,createjs没有处理右键事件,如果考虑并加入了右键事件应该就不会出这个问题了。我也不知道该怎么处理右键事件,想了想,干脆忽略掉算了。试了一下,还真的可以。
修改方式:
_handlePointerDown函数中,
if (this.preventSelection) { e.preventDefault(); }
后面加了一句
if(e.button==2||e.which==3)return;//右键按下,忽略
暂时先这样吧。
createjs-2015.11.26.combined.min.js是官方修改过的,createjs-2015.11.26.combined.js是没有修改过的,可以试一下两者的区别。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。