在下面的代码中,我在Vertical Layout中布局滑块之前添加了SpriteVisualElement。每当我编译并运行时,滑块总是将自己定位在精灵元素的前面而不是它下面。这是一个flash bug还是我做错了什么?解决这个问题的方法是什么?
<s:layout>
<s:VerticalLayout/>
</s:layout>
<s:SpriteVisualElement id="container" includeInLayout="true"/>
<s:HSlider/>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function creationComplete_handler(event:FlexEvent):void
{
var canvas:Shape = new Shape();
canvas.graphics.lineStyle(1,0);
canvas.graphics.beginFill(0);
canvas.graphics.drawRect(0,0,480,360);
canvas.graphics.endFill();
container.addChild(canvas);
}
]]>
</fx:Script>
答案 0 :(得分:1)
那是因为你的SpriteVisualElement
没有大小。其width
和height
为0
。你仍然看到黑色方块,因为它溢出,但它没有被测量,因为它是一个纯粹的ActionScript图形。
为了解决您的问题,只需给container
一个大小:
<s:SpriteVisualElement id="container" width="480" height="360" />
<s:HSlider/>
includeInLayout
默认为true
。
如果你想做的只是绘制一些形状,你最好使用FXG。例如,你的矩形会变成这样:
<s:Rect width="480" height="360">
<s:fill>
<s:SolidColor color="0xff0000" />
</s:fill>
<s:stroke>
<s:SolidColorStroke color="0x00ff00" weight="1" />
</s:stroke>
</s:Rect>
<s:HSlider/>