2011-07-01 36 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