2009-09-08 140 views
0

我創建了一個動態添加一個VBox,它包含兩個圖像。導入從UIComponent派生的自定義組件。問題是包含這兩個圖像的Vbox只有很小的尺寸。我想VBox延伸到兩個圖像的大小。Flex動態創建的組件添加到自定義組件

這是我如何創建VBOX ....

var open:Image = new Image(); 
open.source = 'assets/icons/open.png'; 

var save:Image = new Image(); 
save.source = 'assets/icons/save.png'; 

var box:VBox = new VBox(); 
box.addChild(open); 
box.addChild(save); 

該組件是這樣的....

public class MyComponent extends UIComponent 

我的垂直框分配給(這是在creationComplete事件之後)

public function set VBoxOptions(value:UIComponent) : void { 
      if(_vBoxOptions){ 
       removeChild(_vBoxOptions); 
      } 
      _vBoxOptions = value; 
      addChild(_vBoxOptions); 
      invalidateSize(); 
     } 

在更新顯示列表我做..

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { 
    if(_hoverOptions) 
    { 
     _hoverOptions.move(unscaledWidth+2,2); //please note this is not the problem, 
    } 
} 

感謝提前幫助...

回答

0

你需要擴展UIComponent,因爲畫布是會得到你在那裏更快:

package 
{ 
    import flash.events.Event; 

    import mx.containers.Canvas; 
    import mx.core.UIComponent; 

    public class MyUIComponent extends Canvas 
    { 
     private var _vBoxOptions:UIComponent; 

     public function MyUIComponent() 
     { 
      super(); 
     } 

     public function set vBoxOptions(value:UIComponent):void 
     { 
      if(_vBoxOptions && this.contains(_vBoxOptions)) 
      { 
       this.removeChild(_vBoxOptions); 
      } 

      _vBoxOptions = value; 
      _vBoxOptions.validateNow(); 

      this.addChild(_vBoxOptions); 
     } 
    } 
} 
+0

嗨,我不知道我是否可以。但無論如何,我仍然想知道問題是什麼? – rid00z 2009-09-09 00:57:22

+0

畫布會動態調整其內容(VBox也會)。 UIComponent不會調整其內容。它是一個外殼。在這種情況下,它似乎根本沒有調整大小。這就是爲什麼組件在放置在Canvas中時按預期顯示的原因。除非你有對UIComponent的特定需求,否則就使用Canvas。 – 2009-09-09 01:30:12