Flex:为什么SpriteVisualElement不遵循布局?

时间:2012-08-23 09:24:27

标签: flash flex

在下面的代码中,我在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>

1 个答案:

答案 0 :(得分:1)

那是因为你的SpriteVisualElement没有大小。其widthheight0。你仍然看到黑色方块,因为它溢出,但它没有被测量,因为它是一个纯粹的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/>