2

我在我的 flex 应用程序中对滚动条进行蒙皮,但遇到了一个问题。滚动条之间的这个白色方块(查看图像)破坏了我的所有设计,我需要禁用它,使其不可见,改变它的背景颜色,alpha 或 smth 像这样。

我可以在这里粘贴一些代码,但我认为没有必要。在 Flex 3 中工作。有什么想法吗?

替代文字 http://img97.imageshack.us/img97/9206/scrollbar.png

4

4 回答 4

2

实际上,我在 Flex 框架内部找到了罪魁祸首。这个正方形(称为whiteBox)是在 Container.as 中创建的。

摆脱它很容易,您只需创建一个扩展您要使用的容器的类。

画布示例:

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

你试过设置

background-alpha: 0.0;

在获取滚动条的容器上?然后它应该让容器的矩形拾取父级的颜色。

于 2010-03-16T12:45:56.860 回答
0

一个肮脏的技巧是使用蒙版来隐藏那个正方形。像这样的东西:

<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

您已经有了一个很好的答案,但另一种选择是手动管理滚动条。您可以在应用程序的任何位置放置滚动条并将其绑定以滚动所需的控件。这样做可以有效地让垂直滚动条拉伸那些额外的 16 个像素以覆盖白框。请注意,只有在保证始终需要滚动条的情况下,我才会这样做。最终会看起来像我在这里画的非常糟糕的文字:

          |  |
          |  |
__________|__|
_______| >|\/|
于 2010-03-16T16:36:03.167 回答