0

我创建了一个自定义 Spark ButtonBar。我想在其中显示通知徽章(即显示该选项卡有多少通知的数字),但我不知道如何从外部访问该按钮。

我看过这样的问题:在 ButtonBar 中隐藏一个按钮

但这似乎不起作用,我从中得到的对象:

btnBarNav.dataGroup.getElementAt(0);

不是 Button 或我的皮肤的实例,它是“GameMenuBarInnerClass0”。

关于如何最好地将一些数据传递给我的皮肤以显示与按钮相关的数字的任何建议?

4

1 回答 1

1

不要尝试直接访问和操作视图(您的按钮)。改用模型+数据绑定。

创建自定义皮肤

看起来您已经这样做了,但仅供参考:您需要为 ButtonBar 定制皮肤,为 ButtonBarButtons 提供三个皮肤:一个用于第一个按钮,一个用于最后一个按钮,一个将应用于其间的所有按钮。

为数据提供者使用表示模型

创建一个演示模型,其中包含按钮的标签、可能是图标以及您在按钮中需要的任何其他信息。例如:

class ButtonModel {
    public var label:String;
    [Bindable]
    public var messageCount:int = 0;
}

请注意,我制作了messageCount可绑定的,以便我们稍后可以绑定到它。

将这些模型的集合指定为 ButtonBar 的数据提供者

<s:ButtonBar>
    <s:ArrayList>
        <rs:ButtonModel label="Button 1"/>
        <rs:ButtonModel label="Button 2"/>
    </s:ArrayList>
</s:ButtonBar>

在自定义皮肤中使用演示属性

在您的自定义按钮外观中,您现在可以绑定到此演示模型的属性。主机组件 (ButtonBarButton) 具有data保存此模型实例的属性。

<s:Label id="labelDisplay"/>
<s:Label text="{hostComponent.data.messageCount}"/>

每当您更新messageCount模型上的属性时,它都会自动反映在按钮中。

于 2013-10-22T11:11:42.927 回答