Как получить доступ к пользовательской кнопочной кнопочной панели?

Я создал собственный Spark ButtonBar. Я хотел бы показать значки уведомлений в нем (то есть число, показывающее, сколько уведомлений имеет эта вкладка), но я не могу понять, как получить доступ к кнопке извне.

Я посмотрел на вопросы, подобные этому: Скрыть кнопку на панели кнопок

Но это, похоже, не работает, объект, от которого я возвращаюсь:

btnBarNav.dataGroup.getElementAt (0);

это не экземпляр Button или мой скин, это "GameMenuBarInnerClass0".

Любые предложения о том, как лучше передать некоторые данные в мой скин, чтобы показать номер, связанный с кнопкой?

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 свойство на модель, оно автоматически отразится на кнопке.

Другие вопросы по тегам