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