0

在下面的代码中,我在垂直布局中布局的滑块之前添加了一个 SpriteVisualElement。每当我编译和运行时,滑块总是将自己定位在精灵元素的前面而不是它的下面。这是一个闪存错误还是我做错了什么?这个问题有什么解决办法吗?

<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>

4

1 回答 1

1

那是因为你SpriteVisualElement没有尺码。它widthheight0。您仍然可以看到黑色方块,因为它溢出了,但它没有被测量,因为它是一个纯 ActionScript 图形。

因此,要解决您的问题,只需给出container一个大小:

<s:SpriteVisualElement id="container" width="480" height="360" />
<s:HSlider/>

includeInLayouttrue默认情况下。


但是,如果您只想绘制一些形状,则最好使用 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/>
于 2012-08-23T10:00:26.783 回答