2011-07-01 39 views
1
  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)。Flex:SpriteVisualElement不能添加为子Spark标签?

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

回答

5

它没有被显示,因为您没有将Label(这是一个UIComponent并且与组件生命周期一起使用)添加到另一个UIComponent,它将实际正确地实例化它。你的SpriteVisualElement没有在它内部有UIComponent,它被做成可以绘制自己的精灵。标签正在等待'invalidateDisplayList'被调用,以便它可以自己绘制。

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

+0

UIComponent instanting完成了这项工作:)谢谢。 –

0

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

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

或者您可以尝试标签的addChild方法。尽管尝试将子项添加到组件,例如Label,但它并不是一个容器,这很奇怪。

+0

上面的代码正常工作。根本没有错误。只是标签不显示。和我不添加任何东西到标签实例。我将标签添加到Sprite实例。 –

+0

@Yordan Yanakiev也许你应该重新编写你的问题来包含一些信息。如果它让我困惑;它可能会混淆他人。 – JeffryHouser