1

我有以下代码:

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)

4

1 回答 1

2

Flash 根据其内容处理显示对象的宽度。它在子对象周围创建尽可能小的边界框(如下图蓝色所示)。父影片剪辑的宽度就是这个边界框的宽度。

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

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

在此处输入图像描述

于 2012-07-09T04:03:44.193 回答