[0]Panel初始化BUG
这应该是一个很老的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;
}
做法,有的话请指教一下。
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;
}
没有找到相关结果
已邀请:
3 个回复
Laya_Fred
赞同来自:
设置hscrollbar的value为150,实际运行如下:
已将laya.ui.js内的setContentSize修改。实际上滑动位置在点击panel后并未正常,是我的操作设置存在与您不一样的地方吗?或者您可以提交一个存在问题的示例,这样更加方便的定位问题。
Laya_Fred
赞同来自:
Laya_Fred
赞同来自:
在1.0版本中我们需要您使用除image外的ui组件时都要进行预加载资源后才能进行更换皮肤等操作,但在2.0版本我们在进行诸如更换皮肤等操作时,考虑了未加载的情况,但一些计算布局等函数内由于需要根据资源的大小来计算,会导致例如panel这个情况的出现。我们建议您仍是预加载资源后再设置组件内容。