有没有理由我无法改变空显示对象的宽度和高度?

时间:2010-08-12 03:59:22

标签: actionscript-3

DisplayObject的文档中,它声明如果DisplayObject为空,则无法更改DisplayObject的宽度和高度。为什么这个限制是必要的?在我使用的每个其他框架中,您可以调整空的容器。这种疯狂的原因是什么?

2 个答案:

答案 0 :(得分:2)

在Flash中,DisplayObject不仅仅是其他DisplayObject的容器,尽管它可以。在Flash中,DisplayObject就是一个可显示的对象......可以添加到DisplayList中的对象。空精灵的原始大小是多少?为0x0? 1x1的?因此,尺寸由显示的内容决定。

话虽这么说,您可以更改空DisplayObject的scaleX和scaleY属性。

var c:Sprite = new Sprite();
c.scaleX = c.scaleY = 2;
c.graphics.beginFill(0);
c.graphics.drawRect(0, 0, 200, 80);
c.graphics.endFill();
addChild(c);

舞台上的精灵是400x160。 :)

答案 1 :(得分:2)

您无法更改空对象的宽度和高度的原因是它们最终是派生属性。除了对象的内容外,scaleXscaleY才能真正决定对象的大小 - widthheight实际上只是调整比例的便捷方式。

换句话说,当您更改对象的width属性时,所有Flash实际上都会计算实现所需宽度所需的scaleX,然后将scaleX更改为那个价值。当对象为空时,没有可以实现除零之外的任何宽度的缩放值,因此Flash会忽略该请求。