<?xml version = "1.0" encoding = "utf-8"?>
<mx:Application xmlns:mx = "http://www.adobe.com/2006/mxml" layout = "absolute" creationComplete = "onCreateComplete()">
<mx:Script>
<![CDATA[
import mx.core.UIComponent;
import mx.controls.Label;
import mx.containers.Canvas;
private function onCreateComplete():void
{
testCanvas();
}
private function testCanvas():void
{
for (var i:uint=0; i < 10; i++)
{
var canvas:Canvas=new Canvas();
canvas.setStyle("backgroundColor", "0xABABAB");
var label:Label=new Label();
label.text="Test" + i;
label.width=30000;
canvas.addChild(label);
vbox.addChild(canvas);
}
}
]]>
</mx:Script>
<mx:VBox id = "panels">
<mx:VBox id = "vbox" verticalGap = "1">
</mx:VBox>
</mx:VBox>
</mx:Application>
如果按上面的操作, VBox完全可以显示这些创建的canvas组件,包括canvas里面的Label. 但是如果设置了VBox的height属性,则这些Canvas可能显示不出来,而只能显示一部分.这个BUG就是如果设置了height,而且里面的子对象的总高度已经超过该height,则VBox在布局上会发生计算错误,导致Canvas断裂,而呈现每块为10000px的断裂块.块与块之间是透明不可见的.如设置:
<mx:VBox id = "vbox" verticalGap = "1" height="400" >