采用以下 AS3/MXML 代码:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" xmlns="*"
backgroundColor="#000000" showStatusBar="false" width="400" height="400"
minWidth="0" minHeight="0">
<s:Rect width="50%" height="50%">
<s:fill>
<s:SolidColor color="#0000FF"/>
</s:fill>
</s:Rect>
</s:WindowedApplication>
这主要是有效的。当我增加或减少程序的大小时,Rect 的大小将缩放为 WindowedApplication 的宽度和高度的 50%。但是当我不断减小窗口的高度时,缩小会停止几个像素小于 0。这是尽可能小,因为我可以让 Rect 沿着 y 轴:
在它达到这一点之后,即使我不断减小 WindowedApplication 的大小,也没有任何反应。Rect 保持完全相同的高度,直到我再次开始增加窗口的大小。更重要的是, Rect 的高度是 12 像素,对于它来说这是一个相当随意的数字。
但是,如果我改变:
<s:Rect width="50%" height="50%">
至:
<s:Rect width="{width / 2}" height="{height / 2}">
问题神奇地消失了:
WindowedApplication 的高度是 5,而 Rect 的高度大约是“两个半”。
为什么会有这样的区别?在前面的示例中,我确实尝试过增加大小,然后再次减小大小几次,甚至是缓慢的,但它总是卡在同一个位置。谢谢!