hiloteam / Hilo

A Cross-end HTML5 Game development solution
https://hiloteam.github.io/
MIT License
5.93k stars 863 forks source link

ios和安卓中POINTER_MOVE事件stageY坐标不一致问题 #161

Open SHEE94 opened 4 years ago

SHEE94 commented 4 years ago

当滑动的距离越远stageY坐标偏移越大,到顶部大概坐标还差300左右,但手指都已近在屏幕外力,在安卓上没有出现这个问题

SHEE94 commented 4 years ago

目前找到了一个解决办法官方中e.stageY似乎是e.touches[0].clientY坐标乘以2倍,但有做了自己的一套计算方法,最简单的办法就是直接使用e.touches[0].clientY坐标乘以2倍来计算,可以解决ios诗stageY坐标偏移问题

06wj commented 4 years ago

stageX和stageY是在stage坐标系下的,距顶部你应该拿stage.width和stage.height来做对比。 ios和android不同应该是你设置了stage的scale不同吧

SHEE94 commented 4 years ago

是只在在stage上监听 的POINTER_MOVE事件,scale安卓和苹果是一致的,理论上只要我的手指直接在stage上滑动,那坐标stageY和stageX坐标是和我的手指一致的,但stageY坐标没有跟随我的手指,而且距离屏幕越远的位置向上移动,到顶部的误差越大``` this.stage.on(Hilo.event.POINTER_MOVE, function (e) { e.stopImmediatePropagation && e.stopImmediatePropagation(); console.log('hilo',e.stageY) }.bind(this))


这个事件中是直接获取,手指已经滑倒屏幕之外,但stageY的值却没有到0