Apache flex Flex:Label.addChild()不工作?

Apache flex Flex:Label.addChild()不工作?,apache-flex,Apache Flex,我想制作一个标签,上面有一个小标题,例如,标签上写着$1000,上面有一个小零售价或我们的价格。我正在尝试将标题标签添加到主标签的显示列表中。我没有收到任何错误,但是标题没有显示出来。我也考虑了rawChildren,但显然标签并没有rawChildren属性 这是我的密码: package { import mx.controls.Label; public class PriceLabel extends StrikeThroughLabel //<-- exnten

我想制作一个标签,上面有一个小标题,例如,标签上写着$1000,上面有一个小零售价或我们的价格。我正在尝试将标题标签添加到主标签的显示列表中。我没有收到任何错误,但是标题没有显示出来。我也考虑了rawChildren,但显然标签并没有rawChildren属性

这是我的密码:

package
{
    import mx.controls.Label;

    public class PriceLabel extends StrikeThroughLabel //<-- exntension of label to add strike
    {
        private var _title:Label;

        public function PriceLabel()
        {
            super();
        }

        [Bindable]
        public function set title(s:String):void
        {
            if(_title == null)
            {
                _title = new Label();
                addChild(_title);
                this.alpha = .2;
            }
            _title.text = s;
        }
        public function get title():String
        {
            var s:String
            if(_title != null)
            {
                s = _title.text;
            }
            return s;
        }

    }
}
包
{
导入mx.controls.Label;

公共类PriceLabel扩展了StrikethrawLabel//为什么不创建一个包含两个标签作为其子项的自定义组件,而不是尝试在标签上添加一个子项呢?这让我感觉更干净,因为将子项添加到这样的内置组件似乎不正确。

如果将子项添加到一个非容器的Flex组件中r、 然后您必须手动管理这些子对象的大小和位置。容器为您做了很多这方面的工作

以下是您应该做的:

  • 将子标签的创建移动到
    createChildren()
    函数的覆盖中

  • 在重写
    commitProperties()
    函数中设置子标签的
    text
    属性。您的
    title
    getter和setter应该将该值保存在
    \u title
    变量中,以便稍后在
    commitProperties()
    中用于赋值。这实际上对性能很重要

  • 覆盖
    measure()
    函数,并将
    measuredWidth
    measuredHeight
    更新为主标签及其子标签的最大宽度和高度值

  • 覆盖子标签上的
    updateDisplayList()
    并使用
    setActualSize()
    将其设置为所需的宽度和高度

  • 这看起来可能需要做很多工作,但就最佳实践而言,这是构建自定义组件的方式。Adobe的Flex团队花费了大量时间来最大限度地提高性能,这就是为什么事情会在几个步骤中发生

    根据你的要求,我会创建一个UIComponent的子类,子类中有两个标签或UITextFields,每个标签或UITextFields都有各自的属性


    顺便说一下,
    rawChildren
    属性仅在容器上可用。它的存在是为了您可以添加“chrome”一个不属于容器子布局算法的容器。例如,面板有一个标题栏和一个边框,不受垂直/水平/绝对布局选项的影响。

    我考虑过这一点,但我喜欢标签的大小如何自动调整到它自己的文本,不确定如何制作这样的画布?有办法吗?当然,只是简单而已将画布的大小设置为标签的大小。在定义组件时,为了在正确的时间设置大小,您需要覆盖一个回调,但我记不起它是哪种方法。Flex文档应该能够告诉您。非常感谢您的深入回答!