【问题标题】:Flex Dynamically Created Components Added to Custom ComponentsFlex 动态创建的组件添加到自定义组件
【发布时间】:2009-09-08 10:32:07
【问题描述】:

我创建了一个动态添加的 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,
   }
}

提前感谢您的帮助...

【问题讨论】:

    标签: apache-flex flash actionscript-3 actionscript


    【解决方案1】:

    你是否需要扩展 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);
            }
        }
    }
    

    【讨论】:

    • 嗨,我不确定是否可以。但无论如何我还是想知道问题是什么?
    • Canvas 将根据其内容动态调整大小(VBox 也会这样做)。 UIComponent 不会根据其内容调整大小。它是一个贝壳。在这种情况下,它似乎根本没有调整大小。这就是组件在放置在 Canvas 中时按预期显示的原因。除非您对 UIComponent 有特殊需求,否则请使用 Canvas。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多