Flex:SpriteVisualElement不能作为子标签添加?

时间:2011-07-01 14:35:42

标签: flex

            var s : SpriteVisualElement = new SpriteVisualElement();
                s.graphics.beginFill( 0xFFFF00 );
                s.graphics.drawRect( 0, 0, 100, 20 );
                s.graphics.endFill();
                s.width = 100;
                s.height = 20;
            this.addElement( s ) ;

            var l : Label = new Label();
                l.text = "text";
                l.width = s.width;
                l.height = s.height;
            s.addChild( l );

以下代码似乎无法正常工作(Flex 4.5)。

  • 什么可能导致此问题,以及如何解决它?

2 个答案:

答案 0 :(得分:5)

它没有被显示,因为你没有将Label(它是一个UIComponent并与组件生命周期一起工作)添加到另一个将实际正确实例化它的UIComponent。你的SpriteVisualElement没有在其中包含UIComponents,它被设置为具有可以绘制自己的精灵。标签正在等待'invalidateDisplayList'被调用,以便它可以自己绘制。

强制绘制或使用UIComponent作为Label的容器。

答案 1 :(得分:0)

Spark Label不是容器;因此没有addElement方法。我假设你因为这个而得到编译错误[但你没告诉我们你的问题是什么]。

您可以将标签包装在容器中,例如GroupSkinnableContainer,并将您的额外视觉元素用作同一组的子元素。

或者您可以尝试使用Label的addChild方法。尝试将子项添加到组件(例如Label)中并不是一个容器,这很奇怪。