Apache flex 如何在Flex中创建仅圆角的HBox?
我正在尝试在flex中创建一个只圆角的Apache flex 如何在Flex中创建仅圆角的HBox?,apache-flex,actionscript-3,Apache Flex,Actionscript 3,我正在尝试在flex中创建一个只圆角的HBoxHBox(以及所有其他flex容器)具有cornerRadius样式,但它适用于所有拐角。我没有看到一种方法来指定各个角的样式 是否有任何内置方法可以做到这一点,或者我是否需要编写自己的自定义绘图代码来绘制圆角背景?这取决于您使用的边框蒙皮。如果使用内置蒙皮(HaloBorder),则有一种样式可以指定“roundedBottomCorners”(这是一种布尔值),允许您控制底角是否为圆角。如果您使用自己的边界蒙皮,则可以添加任何想要控制角的样式。这
HBox
HBox(以及所有其他flex容器)具有cornerRadius
样式,但它适用于所有拐角。我没有看到一种方法来指定各个角的样式
是否有任何内置方法可以做到这一点,或者我是否需要编写自己的自定义绘图代码来绘制圆角背景?这取决于您使用的边框蒙皮。如果使用内置蒙皮(HaloBorder),则有一种样式可以指定“roundedBottomCorners”(这是一种布尔值),允许您控制底角是否为圆角。如果您使用自己的边界蒙皮,则可以添加任何想要控制角的样式。这取决于您使用的边界蒙皮。如果使用内置蒙皮(HaloBorder),则有一种样式可以指定“roundedBottomCorners”(这是一种布尔值),允许您控制底角是否为圆角。如果您使用自己的边框蒙皮,您可以添加任何想要控制角的样式。唉,我知道的唯一解决方案是自己绘制背景,使用编程蒙皮——特别是orderriding RectangularBorder::
package
{
import mx.skins.RectangularBorder;
public class HBoxSkin extends RectangularBorder
{
public function HBoxSkin()
{
super();
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
var cr:Number = getStyle("cornerRadius");
var bc:Number = getStyle("backgroundColor");
graphics.clear();
graphics.beginFill(bc, 1);
// Draw the rectangle manually, rounding only the top two corners
graphics.drawRoundRectComplex(0, 0, unscaledWidth, unscaledHeight, cr, cr, 0, 0);
graphics.endFill();
}
}
}
。。。然后使用HBox的borderSkin属性应用更改:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<!-- Apply the skin using the borderSkin property of your HBox -->
<mx:HBox borderSkin="HBoxSkin" backgroundColor="#FFFFFF" cornerRadius="10" height="100" width="100" top="10" left="10" />
</mx:Application>
本章介绍了如何实现编程蒙皮。不幸的是,这已经超出了初学者的水平(这在Flex4中变得容易多了),但是如果您按照我的示例和文档中的代码进行操作,您应该能够将一些东西结合起来。祝你好运 唉,我所知道的唯一解决方案是自己绘制背景,使用编程蒙皮——特别是orderriding RectangularBorder::
package
{
import mx.skins.RectangularBorder;
public class HBoxSkin extends RectangularBorder
{
public function HBoxSkin()
{
super();
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
var cr:Number = getStyle("cornerRadius");
var bc:Number = getStyle("backgroundColor");
graphics.clear();
graphics.beginFill(bc, 1);
// Draw the rectangle manually, rounding only the top two corners
graphics.drawRoundRectComplex(0, 0, unscaledWidth, unscaledHeight, cr, cr, 0, 0);
graphics.endFill();
}
}
}
。。。然后使用HBox的borderSkin属性应用更改:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<!-- Apply the skin using the borderSkin property of your HBox -->
<mx:HBox borderSkin="HBoxSkin" backgroundColor="#FFFFFF" cornerRadius="10" height="100" width="100" top="10" left="10" />
</mx:Application>
本章介绍了如何实现编程蒙皮。不幸的是,这已经超出了初学者的水平(这在Flex4中变得容易多了),但是如果您按照我的示例和文档中的代码进行操作,您应该能够将一些东西结合起来。祝你好运 连皮都没看过。我只是在使用默认设置。我会试试圆形底角的方法,看看是否有效。有没有相反的方法?圆角底角而非顶部?圆角底角不适用于HBox。@Christian-可能没有文档记录,但对我有效。您使用的框架版本是什么?我只是好奇,因为它不是为我编译的(3.4使用FlexBuilder3,但Flex3.2也不是),甚至从来没有看过皮肤。我只是在使用默认设置。我会试试圆形底角的方法,看看是否有效。有没有相反的方法?圆角底角而非顶部?圆角底角不适用于HBox。@Christian-可能没有文档记录,但对我有效。您使用的框架版本是什么?我只是好奇,因为它不是为我编译的(3.4使用FlexBuilder 3,但Flex 3.2也不是)。这比原始问题所需的复杂得多,但它仍然对我很有帮助。稍后我需要一个HBox,它可以任意圆角,看起来我可以很容易地调整它使其工作。这比原始问题需要的复杂,但它仍然对我很有帮助。我以后需要一个HBox,它可以任意圆角,看起来我可以很容易地调整它,使其工作。