cocos creator 1.10.0的 canvas 的 fit_width 导致 scrollView + widget 的content坐标计算错误

  • Creator 版本:1.10.0

  • 目标平台:web

  • 详细报错信息,包含调用堆栈:无

  • 重现方式:运行demo

  • 之前哪个版本是正常的 :1.9.x及之前

  • 出现概率:100%

新建一个工程添加个scrollview,content中加入若干子节点(需超出scrollview范围)。scrollview各级节点加入widget,模式为window_resize。canvas节点选择fit width模式,运行预览,scrollview中的部分内容在可见范围之外,向下拉动后仍然回回到可见范围外。
若canvas节点取消fit width模式勾选则问题消失。

编辑器中:


浏览器预览:

测试用demo工程:
ScrollTest.zip (528.8 KB)

被这玩意折腾了出了一身汗,标题改了几十遍,结果发现只要标题里的英文前后加空格即可。官方能不能把这提示改改?

麻烦提供一个 demo~

demo在帖子的最后,那个ScrollTest.zip
@jare

新下了1.10.1测试,问题一样

@jare
求关注~~~
求解决方案~~~

来吧,这个给你,这是个小 bug,所以如果有需求建议你通过自定义引擎修改一下,这个 bug 会在下个版本修复。顺便手动感谢一下 @knox 大大。

非常感谢 @crazypad @Knox

按这个方案修改引擎后基本正确,但是还有点小问题,scrollView的view和content节点的widget组件的top均不起作用。
将之前的ScrollTest工程中ScrollView的view的widget的top从10px改为100px,如下图:

浏览器中预览,发现第一个元素被view节点的mask遮住了一块,如去掉mask可发现content是紧贴scrollView的上沿的。所以就是view节点的坐标计算了,但是元素的坐标没有跟着view动。

修改content节点的widget的top,结果一样,元素仍然紧贴scrollView上边界。
我不确定这是bug还是设计如此,希望引擎组有空能给确认一下,谢谢。
@crazypad @Knox @jare

感谢你的发问,以及优秀的提问习惯,这个问题我们会尽快在下个版本内容中修复的。话说这个计算还是有点复杂。。。。可能会赶不及在下个小版本发布时解决,所以回头有方案的话,会通过 pr 的方式提醒你的,放心。:slightly_smiling:

好的,多谢,引擎团队辛苦了

@crazypad 和这个问题是一样的问题吗?
ScrollView 的 Content 节点,在运行时,Content节点的 x、y 坐标初始值会被重写造成定位偏差。

详细描述及Demo 见
http://forum.cocos.com/t/rc2-cocos-creator-v2-0-1/64731/289