在DisplayObject的文档中,它声明如果DisplayObject为空,则无法更改DisplayObject的宽度和高度。为什么这个限制是必要的?在我使用的每个其他框架中,您可以调整空的容器。这种疯狂的原因是什么?
答案 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)
您无法更改空对象的宽度和高度的原因是它们最终是派生属性。除了对象的内容外,scaleX
和scaleY
才能真正决定对象的大小 - width
和height
实际上只是调整比例的便捷方式。
换句话说,当您更改对象的width
属性时,所有Flash实际上都会计算实现所需宽度所需的scaleX
,然后将scaleX
更改为那个价值。当对象为空时,没有可以实现除零之外的任何宽度的缩放值,因此Flash会忽略该请求。