Flex HDividedBox Divider backgroundColor
问题描述:
有没有简单的方法来设置HDividedBox(或VDividedBox的)BoxDivider对象的背景颜色? BoxDivider是具有拖动控制的“分频器”。Flex HDividedBox Divider backgroundColor
默认情况下,BoxDivider透明,其上的小手柄图像是透明的。
有一种dividerSkin样式,默认为mx.skin.BoxDividerSkin,它是对Assets.swf文件中符号的引用。
任何想法?我需要制作替代皮肤吗?这是我唯一的选择吗?谷歌搜索引发了我很多解决方案,这很奇怪,很老套,坦率地说,似乎没有工作。
谢谢。
答
OK,这里是你如何做到这一点:
- 创建扩展ProgrammaticSkin
- 覆盖的updateDisplayList方法是这样一类:
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 & y的中间...
答
我希望能够为每个分区创建一个简单的编程皮肤。这样我就可以做到这一点:
< MX:HDividedBox类dividerSkin =“path.MyDividerSkin”
,但我有困难,搞清楚MyDividerSkin类应该是什么样子。你认为这很容易。 :)
答
此外,您还可以扩展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();
}
太棒了!文档使它看起来像一个简单的样式更改,但是当您设置样式不起作用。搞清楚这一点很好。 – invertedSpear 2010-03-11 19:06:10