【问题标题】:How to render a component with dynamic visibility in ActionScript?如何在 ActionScript 中呈现具有动态可见性的组件?
【发布时间】:2025-12-31 16:35:01
【问题描述】:

我有一个在 Flex 应用程序(Flex 3.3、ActionScript 3)中使用的自定义 ActionScript 组件。该组件包含一个 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;
}

【问题讨论】:

    标签: apache-flex actionscript-3


    【解决方案1】:

    您是否将组件添加到显示列表中?看起来您已将图像添加到组件的显示列表中,但可能尚未对组件本身进行任何操作。

    【讨论】:

    • 是的,该组件实际上被用作嵌入式项目渲染器,因此它在我的应用程序的其他地方使用。我还应该提到,我的渲染器中还有其他始终可见的组件,它们显示得很好。
    【解决方案2】:

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

    【讨论】: