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サイズがないからです。そのwidthheightです0。オーバーフローしているため、まだ黒い四角が表示されていますが、純粋な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 に答える