Actionscript 3 在AS3/MXML中,为什么绑定组件';s height to height/2比将其绑定到50%更有效?
采用以下AS3/MXML代码:Actionscript 3 在AS3/MXML中,为什么绑定组件';s height to height/2比将其绑定到50%更有效?,actionscript-3,flash,apache-flex,air,mxml,Actionscript 3,Flash,Apache Flex,Air,Mxml,采用以下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" widt
<?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不到几个像素的像素停止。这是我能得到的沿y轴的矩形的最小值:
在达到这一点之后,即使我不断减小WindowedApplication的大小,也不会发生任何事情。在我再次开始增加窗口大小之前,矩形保持在完全相同的高度。更重要的是,Rect的高度是12像素,这对于它来说是一个非常任意的数字
但是,如果我改变:
<s:Rect width="50%" height="50%">
致:
问题神奇地消失了:
WindowedApplication的高度为5,Rect的高度约为“2.5”
为什么会有这样的区别?在前面的示例中,我确实尝试过增加大小,然后再减小几次,甚至很慢,但它总是卡在同一个位置。谢谢 这里实际上有几个单独的属性:
- 高度
- 百分高度
- 明确的
if (!isNaN(explicitMinHeight) && measuredHeight < explicitMinHeight)
measuredHeight = explicitMinHeight;
及
所以,希望这是有意义的
总之,;如果设置了高度百分比;然后Flex计算高度,并有一个最小值。如果设置了明确的高度;然后Flex使用该值并跳过自己的内部计算
[我只是粗略地回顾了Flex框架代码,因此您必须回顾代码才能更深入地了解]这里实际上有几个单独的属性:
- 高度
- 百分高度
- 明确的
if (!isNaN(explicitMinHeight) && measuredHeight < explicitMinHeight)
measuredHeight = explicitMinHeight;
及
所以,希望这是有意义的
总之,;如果设置了高度百分比;然后Flex计算高度,并有一个最小值。如果设置了明确的高度;然后Flex使用该值并跳过自己的内部计算
[我只是粗略地回顾了Flex框架代码,因此您必须回顾代码才能更深入地了解]我认为您发现了一个bug!:)@StephenNYC我不同意[更多细节请参见我的答案]我认为您发现了一个bug!:)@StephenNYC我不同意[参见我的答案了解更多细节]minWidth和minHeight被设置为零,但百分比方法没有如预期的那样工作,正如您所确认的,它似乎有一个内部最小值。。。那么这是一个bug?@StephenNYC没有花比我想花更多的时间来检查代码;我不会把它叫做虫子。我不知道最小身高/测量的最小身高/明确的最小身高之间的关系。记住“家长”总是负责衡量孩子的大小;因此也可能有一些因素——尽管看起来提供的示例使用了基本布局;所以这不应该是一个问题。minWidth和minHeight设置为零,但百分比方法无法按预期工作,正如您所确认的,它似乎有一个内部最小值。。。那么这是一个bug?@StephenNYC没有花比我想花更多的时间来检查代码;我不会把它叫做虫子。我不知道最小身高/测量的最小身高/明确的最小身高之间的关系。记住“家长”总是负责衡量孩子的大小;因此也可能有一些因素——尽管看起来提供的示例使用了基本布局;所以这不应该是个问题。
if (!canSkipMeasurement())
measure();
protected function canSkipMeasurement():Boolean
{
return !isNaN(explicitWidth) && !isNaN(explicitHeight);
}