12
2016
07

createjs中stage.mouseX的bug

发本来想要屏蔽右键菜单,无意间发现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是没有修改过的,可以试一下两者的区别。

« 上一篇下一篇 »

相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。