Creator 2.2.1 button 在localhost:7456 时点击位置不会跟浏览器滑动?

在localhost:7456预览运行时,当Canvas大于浏览器而需要滑动时,button在初始这个位置,点击功能很正常(点红色圈位置):

但当滑动浏览器,button移到其他地方,需要点击位置好像沒有跟随移动,仍然是在红圈中(初始位置):

估计是要点击的位置没有跟浏览器滑动改变位置,为什么会这样?
(浏览器:Safari)

我好像记得build的版本没见过这问题,只是localhost:7456预览运行时才有,
在预览时如果开发手机大小画面的横向游戏应该没大问题,但如果开发画面大的(高度比较高)的网页游戏便遇到问题了,当然现时可以每次用build当作预览来解决,但感觉很不方便,有没有引擎开发团队可看看什么问题?

有没有引擎开发团队可看看?想升級Creator但被這问题卡住了…

没有复现你这个情况,是不是页面出现报错了,提供个demo看看?

是指当画面太大要scroll时button触发点击的范围没有跟button移到显示的地方,只在localhost:7456预览运行时才遇到這问题。(用Mac的Safari)

那alert是用來表示button点击成功的,页面好像沒报错,只是当要scroll時点击的范围沒对上button的位置。
要不要上载一下project上来试试?

可试试建立大画面的Canvas,例如是960x3000,button放在(480,1500),然后试试在localhost:7456预览,试试scroll down来点那个button

开了个960x1000的canvas及一个会出alert的button,试试将浏览器的高度拉至比1000少(例如600),在localhost:7456预览运行,然后scroll画面点击button吧:NewProject.zip (838.9 KB)


有沒有重现问题?

解决方案:
这个问题在 QQ 浏览器和 UC 浏览器都会出现,这是 QQ 浏览器的反馈:QQ 浏览器触点偏移

需要修改引擎源码

1、CCInputManager.js 的 getPointByEvent 函数,即修改为:

getPointByEvent (event, pos) {
        // qqbrowser、uc、safari browser can't calculate pageY correctly, need to refresh canvas bounding rect
        if (cc.sys.browserType === cc.sys.BROWSER_TYPE_QQ 
            || cc.sys.browserType === cc.sys.BROWSER_TYPE_UC
            || cc.sys.browserType === cc.sys.BROWSER_TYPE_SAFARI) {
            this._updateCanvasBoundingRect();
        }
        ...(此处省略无需改动的代码)
    },

2、CCSys.js 866行的代码进行修改:

修改前:

var typeReg1 = /mqqbrowser|micromessenger|qq|sogou|qzone|liebao|maxthon|ucbs|360 aphone|360browser|baiduboxapp|baidubrowser|maxthon|mxbrowser|miuibrowser/i;
var typeReg2 = /qqbrowser|ucbrowser|ubrowser|edge/i;

修改后:

var typeReg1 = /mqqbrowser|micromessenger|qqbrowser|sogou|qzone|liebao|maxthon|ucbs|360 aphone|360browser|baiduboxapp|baidubrowser|maxthon|mxbrowser|miuibrowser/i;
var typeReg2 = /qq|ucbrowser|ubrowser|edge/i;

修改成功之后,编译引擎即可。不懂编译引擎的同学可以参考文档:定制引擎,之后重启编辑器即可。

我们会在 2.3.0 版本修复这个问题。

PR