宽度不考虑'x'?

时间:2012-07-09 01:26:35

标签: actionscript-3 flash flex flex3

我有以下代码:

trace('width1 : '+ width);
_selected = new ScaleBitmap(new SearchDropDownItemSelectedBitmap(0, 0));
_selected.scale9Grid = new Rectangle(5, 5, _selected.width - 10, _selected.height - 10);
_selected.width = 109;
_selected.x = 2;
addChild(_selected);
trace('width2 : '+ width);

显示:

[trace] width1 : 0
[trace] width2 : 109

这意味着我的元素与其子元素的大小相同,而子元素的位置为x = 2。为什么会那样?我怎么知道实际尺寸? (这里应该是109 + 2 = 111)

1 个答案:

答案 0 :(得分:2)

Flash根据显示对象的内容处理显示对象的宽度。它在子对象周围创建了最小的边界框(如下面的蓝色所示)。父级影片剪辑的宽度是此边界框的宽度。

这些计算中未使用中心点。

如果需要,您可以简单地将MovieClips X位置添加到其宽度(_selected.x + _selected.width),但这不考虑位于中心点左侧的子内容(负值)

enter image description here

相关问题