Flex动态创建的组件已添加到自定义组件

时间:2009-09-08 10:32:07

标签: flex flash actionscript-3 actionscript

我创建了一个动态添加VBox,包含两个图像。进入从UIComponent派生的自定义组件。问题是包含两个图像的Vbox只是一个非常小的尺寸。我希望VBox伸展到两幅图像的大小。

这就是我创建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

我将VBox分配给这样的组件(这是在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,
   }
}

感谢您提前帮助...

1 个答案:

答案 0 :(得分:0)

你需要扩展UIComponent,因为Canvas会让你更快地到达那里:

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);
        }
    }
}