Flex HDividedBox分频器backgroundColor

时间:2010-03-11 15:53:58

标签: flex

有没有简单的方法来设置HDividedBox(或VDividedBox)的BoxDivider对象的backgroundColor? BoxDivider是“分隔符”,上面有拖动句柄。

默认情况下,BoxDivider是透明的,上面有小手柄图像。

dividerSkin样式默认为mx.skin.BoxDividerSkin,它是对Assets.swf文件中符号的引用。

有什么想法吗?我必须做一个替代皮肤吗?这是我唯一的选择吗?谷歌搜索这导致我许多奇怪和黑客的解决方案,坦率地似乎没有工作。

感谢。

3 个答案:

答案 0 :(得分:3)

好的,这是你如何做到的:

  1. 创建一个扩展ProgrammaticSkin
  2. 的类
  3. 覆盖updatedisplaylist方法,如下所示:
  4. override protected function updateDisplayList(w:Number, h:Number):void
    {
        var divwidth:Number = getStyle("dividerThickness");
    
        if (divwidth == 0)
        {
            divwidth = 10;
        }
    
        graphics.clear();
        graphics.beginFill(0xFF0000, 1.0);
        graphics.drawRect(-(parent.height / 2), -(divwidth / 2), parent.height, divwidth);
        graphics.endFill();
    
    }
    

    然后将此添加到您的分区框

    <mx:HDividedBox dividerSkin="path.MyDividerSkin"/>
    

    默认情况下,皮肤会添加到分隔符的中间,因此您需要偏移x&amp; Y ...

答案 1 :(得分:1)

此外,您可以扩展DividedBox并覆盖updateDisplayList,如下所示:

    override protected function updateDisplayList(w:Number, h:Number):void 
    { 

        super.updateDisplayList(w,h);

        graphics.clear();
        var n:int = numDividers;
        graphics.beginFill(0xFF0000, 1.0);
        for (var i:int = 0; i < n; i++) 
        {
            var box:BoxDivider = getDividerAt(i); 
            graphics.drawRect(box.x, box.y, box.width, box.height);
        }
        graphics.endFill();

    }

答案 2 :(得分:0)

我希望能够为每个分割盒创建一个简单的编程皮肤。所以我可以这样做:

&lt; mx:HDividedBox dividerSkin =“path.MyDividerSkin”

但是我很难搞清楚MyDividerSkin类应该是什么样子。你认为这很容易。 :)