0

カスタム Spark ButtonBar を作成しました。通知バッジ (つまり、そのタブにある通知の数を示す数字) を表示したいのですが、外部からボタンにアクセスする方法がわかりません。

私はこのような質問を見てきました:ボタンバーにボタンを隠す

しかし、それはうまくいかないようです。私が戻ってきたオブジェクトは次のとおりです。

btnBarNav.dataGroup.getElementAt(0);

ボタンやスキンのインスタンスではなく、「GameMenuBarInnerClass0」です。

ボタンに関連する数字を表示するために、データをスキンに渡す最善の方法について何か提案はありますか?

4

1 に答える 1

1

ビュー (ボタン) に直接アクセスして操作しようとしないでください。代わりにモデル + データ バインディングを使用してください。

カスタムスキンを作成する

すでにこれを行っているように見えますが、参考までに: ButtonBar のカスタム スキンと、ButtonBarButtons の 3 つのスキンが必要です。

データプロバイダーにプレゼンテーション モデルを使用する

ボタンのラベル、おそらくアイコン、およびボタンに必要な追加情報を保持するプレゼンテーション モデルを作成します。例えば:

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 に答える