这应该是一个很老的BUG了,一直没有被修复,我看了下源码还是没修复就把自己改的同步一下,不知道是不是还有更加正确的
做法,有的话请指教一下。
Panel创建后,同帧设置Panel的hScrollBar="",然后refresh(),设置value值,则面板刷新位置出错,因为setContentSize实际上
当前帧并没有调用,而之后调用创建在了0,0点,因此位置错误了
类似的BUG
https://ask.layabox.com/question/40655
https://ask.layabox.com/question/15874
Panel.ts修改:这里改为取了一下当前scrollbar的值
/**
* @private
* 设置内容的宽度、高度(以像素为单位)。
* @param width 宽度。
* @param height 高度。
*/
private setContentSize(width: number, height: number): void {
var content: Box = this._content;
var rectX = 0;
var rectY = 0;
if (this.vScrollBar) rectY = this.vScrollBar.value;
if (this.hScrollBar) rectX = this.hScrollBar.value;
content.width = width;
content.height = height;
content._style.scrollRect || (content.scrollRect = Rectangle.create());
content._style.scrollRect.setTo(rectX, rectY, width, height);
content.scrollRect = content.scrollRect;
}
附件:
Bug文本.zip