2

Flex アプリでスクロールバーをスキニングしていて、1 つの問題が発生しました。スクロールバー間のこの白い四角形 (画像を表示) は私のデザインをすべて消し去ります。これを無効にし、非表示にし、背景色、アルファ、またはこのように滑らかに変更する必要があります。

ここにコードを貼り付けることができますが、その必要はないと思います。Flex 3 で作業しています。何かアイデアはありますか?

代替テキスト http://img97.imageshack.us/img97/9206/scrollbar.png

4

4 に答える 4

2

実際、Flex フレームワークの内部を見ている犯人を見つけました。この正方形 ( と呼ばれるwhiteBox) は Container.as で作成されます。

それを取り除くのはとても簡単です。使用したいコンテナを拡張するクラスを作成するだけです。

Canvas の例:

package
{
    import mx.containers.Canvas;

    public class NoWhiteBoxCanvas extends Canvas
    {

        public function NoWhiteBoxCanvas()
        {
            super();
        }

        override public function validateDisplayList():void
        {
            super.validateDisplayList();
            this.whiteBox.visible = false;
        }

    }
}


次に、MXML で次のようにします。

<local:NoWhiteBoxCanvas width="300" height="300" horizontalScrollPolicy="on" verticalScrollPolicy="on"/>


...そして、もう白い四角はありません;)

于 2010-03-16T14:35:57.863 に答える
0

あなたはすでに良い答えを持っていますが、別の方法はスクロールバーを手動で管理することです. アプリの任意の場所にスクロールバーを配置してバインドし、必要なコントロールをスクロールできます。これを行うと、垂直スクロール バーを効果的に取得して、余分な 16 ピクセルを伸ばしてホワイト ボックスを覆うことができます。常にスクロールバーが必要であることが保証されている場合にのみ、これを行うことに注意してください。ここに私の本当に悪いテキスト描画のように見えるでしょう:

          |  |
          |  |
__________|__|
_______| >|\/|
于 2010-03-16T16:36:03.167 に答える
0

汚いトリックの 1 つは、マスクを使用してその正方形を隠すことです。このようなもの :

<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="creationComplete()">

    <mx:Script>
        <![CDATA[
            import mx.core.UIComponent;

            public function creationComplete():void
            {
                var compMask:UIComponent = new UIComponent;
                compMask.graphics.beginFill( 0xff0000 );
                compMask.graphics.drawRect( 0, 0, comp.width, comp.height - 16 );
                compMask.graphics.drawRect( 0, comp.height - 16, comp.width - 16, 16 );
                compMask.graphics.endFill();
                addChild( compMask );
                comp.mask = compMask;
            }
        ]]>
    </mx:Script>

    <mx:Canvas id="comp" width="300" height="300" horizontalScrollPolicy="on" verticalScrollPolicy="on"/>

</mx:WindowedApplication>

試してみただけで、うまくいきます。コンポーネントのサイズが変更されるたびに、マスクを再描画する必要があります。最善の方法は、Canvas を拡張してジョブ自体を実行するカスタム クラスを作成することです。

編集:もちろん、値が異なる場合は、カスタムスクロールバーの重みで「16」を変更する必要があります。

于 2010-03-16T13:32:08.000 に答える
0

設定してみましたか

background-alpha: 0.0;

スクロールバーを取得しているコンテナで?コンテナの四角形が親の色を拾うようにする必要があります。

于 2010-03-16T12:45:56.860 に答える