我有以下代码:
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)
答案 0 :(得分:2)
Flash根据显示对象的内容处理显示对象的宽度。它在子对象周围创建了最小的边界框(如下面的蓝色所示)。父级影片剪辑的宽度是此边界框的宽度。
这些计算中未使用中心点。
如果需要,您可以简单地将MovieClips X位置添加到其宽度(_selected.x + _selected.width),但这不考虑位于中心点左侧的子内容(负值)