2016-05-30 82 views
2

由于我正在开发一个项目,我需要能够在画布周围拖动对象,还可以拖动实际画布背景后面的整个页面我PIXI精灵,我跟着这家伙在这里的发现:PIXI - disabled preventDefault触摸事件无法在Android设备上工作

https://github.com/pixijs/pixi.js/issues/2483

默认情况下,Pixi的帆布/显示面积不能用于滚动 网页包含它。这在触摸屏上很重要。 (例如,如果您使用网页的其余部分捏放放大Pixi画布, ,则可能会陷入困境,无法缩小(或平移) ,因为没有非Pixi画布区域的页面“抓取”你的捏手势 )。

要启用此功能,我使用autoPreventDefault。但是这会带来 带来的一些不良副作用,例如滚动/捏缩放动作 在画布上注册“点击”或点击的方式并非 有意义。 (即我试图放大或 滚动外部页面这一点上,不与Pixi的帆布交互)

要解决的是,我修改和编译 Pixi的我自己的定制版本,我可以申请preventDefault以更精细的方式...

要获得页面滚动功能,似乎我只需要 preventDefault在InteractionManager.prototype.onTouchEnd 函数中。而autoPreventDefault也会阻止其他事件发生。 (onMouseDown,onTouchMove,onTouchStart)。

将autoPreventDefault = false并仅将preventDefault应用于 onTouchEnd,为我提供了所需的功能。但它不是很高兴不要 必须以这种方式定制和重建Pixi每个版本。 (对不起 如果有别的我错过的东西在这里,我不完全了解 事件系统Pixi的,或自己能做什么这个 滚动触摸问题)

所以我禁用即'onTouchStart'和'onMouseMove'上的preventDefault()保留原样'onTouchEnd'

这适用于IOS设备,但不适用于Android,唯一的例外是使用Adblock浏览器的Samsung A7(在Chrome上失败)。

真的很感谢这方面的帮助。

TLDR:

上onTouchStart和的OnMouseMove禁用PIXI's e.preventDefault适用于iOS设备,让我周围而不是draggin我的画布在Android设备上滚动页面。

回答

1

使用renderer.plugins.interaction.autoPreventDefault=true应该做的伎俩。

相关问题