0

使用 Flash CS5,我今天遇到了一些奇怪的事情。

UIScrollBar 组件的刚性宽度为 15px。当您将它添加到诸如 Sprite 之类的容器中时,您会期望 sprite 的宽度返回 15,但它却返回 100!

这是一个示例代码。

import flash.display.Sprite;
import fl.controls.UIScrollBar;

var spr:Sprite = new Sprite();
addChild(spr);
trace('spr.width:',spr.width);

var bar:UIScrollBar = new UIScrollBar();
spr.addChild(bar);
trace('bar.width',bar.width);
trace('spr.width:',spr.width);

有趣的是,输出是

spr.width: 0
bar.width 15
spr.width: 100

有人知道那里发生了什么吗?这是一个错误吗?

4

1 回答 1

0

发现这是一个错误。发生的情况是,它需要一些时间才能在舞台上绘制/渲染组件,因此只有在绘制后才能访问其大小。作为记录,在我的计算机中需要 1 毫秒。直到它返回预期值。

另一个令人惊讶的问题是,UIScrollBar 返回 15px 作为其宽度,而容器精灵返回 16px。对于那些寻找原因的人来说,这可能与使用thickness=1和绘制的条形轮廓有关scaleMode=LineScaleMode.NONE。我写的一个类也有同样的问题,我必须通过在每个超级方法的返回值上加 1 来覆盖宽度和高度 getter。

于 2012-12-22T03:15:30.157 回答