如何在ActionScript中呈现具有动态可见性的组件?

时间:2009-07-29 15:31:31

标签: flex actionscript-3

我有一个自定义的ActionScript组件,我在Flex应用程序中使用它(Flex 3.3,ActionScript 3)。此组件包含一个Image控件,其可见性是根据提供给组件的data元素的属性动态设置的。

问题在于,即使我将图像设置为可见,也不会在屏幕上呈现。为了渲染图像,我需要做些什么吗?下面相关代码的片段:

override public function set data( value:Object ):void
{
    _data = value;

    if( _data ) {

        if( _myImg ) {
            _myImg.source = someImageClass;
            _myImg.visible = _data.visibilityProperty;
            _myImg.includeInLayout = _data.visibilityProperty;
            _myImg.invalidateProperties();
            _myImg.invalidateDisplayList();
        }
    }

    invalidateProperties();
    invalidateDisplayList();
}

override protected function createChildren():void
{
    super.createChildren();

    if( !_myImg ) {
        _myImg = new Image();
        _myImg.height = 16;
        _myImg.width = 16;
        addChild( _myImg );
    }
}

override protected function updateDisplayList( unscaledWidth:Number, unscaledHeight:Number ):void
{
    super.updateDisplayList( unscaledWidth, unscaledHeight );

    _myImg.x = calculatedXCoordinate;
    _myImg.y = calculatedYCoordinate;
}

2 个答案:

答案 0 :(得分:2)

您是否将组件添加到显示列表中?看起来您已将图像添加到组件的displaylist中,但可能没有对组件本身做任何事情。

答案 1 :(得分:1)

事实证明,我发布的上述代码,实际上正常运行。我发现由于我应该抓住的复制粘贴错误,我没有将图像添加到显示列表中,因此它从未出现过。