Быстро и грязно
Вы можете получить доступ к обложке любого компонента и просто установить его состояние напрямую:
subMenu.btnDashboard.skin.currentState = "disabled";
Это, однако, не очень чистый способ сделать это. Вы прямо указываете классу Skin, что делать, и полностью обходите компонент хоста. Следовательно, хост-компонент не имеет представления об изменениях, которые были внесены в его скин.
Правильный путь
Более чистый способ решения этой проблемы состоит в том, чтобы предоставить свойство хост-компоненту, а затем указать оболочке настроить себя на возможные изменения, переопределив метод getCurrentSkinState()
.
Например, вы можете создать свойство 'enabled', а затем указать оболочке обновить его состояние, вызывая invalidateSkinState()
всякий раз, когда устанавливается 'enabled'.
public function set enabled(value:Boolean):void {
_enabled = value;
invalidateSkinState();
}
Вызов invalidateSkinState()
вызовет скин getCurrentSkinState()
в следующем цикле рендеринга. Этот метод будет выглядеть примерно так:
override protected function getCurrentSkinState():String {
return _enabled ? "normal" : "disabled";
}
Обратите внимание, что, поскольку вы создаете скин для Button (или его подкласса), все, что я здесь написал, уже встроено в этот компонент. Таким образом, ответ на ваш вопрос может быть простым: «просто установите для свойства« enabled »значение true
.
subMenu.btnDashboard.enabled = true;