Flex Как изменить состояние кнопки в ActionScript?
-
25-10-2019 - |
Вопрос
я могу сделать это:
<s:Button id="Btn" enabled.State1="false" />
Но следующий код дает мне ошибку.
private function enableDisable():void{
Btn.enabled.State1="false"; //Error: Access of undefined property State1
}
Как кодировать включено.state1 в Actionscript?
Спасибо
Решение
Я знаю, что это не то, что вы хотите услышать, но здесь все равно идет: почему вы хотите это сделать? Вся цель государств состоит в том, что вам не придется писать тонны ActionScript, чтобы сделать то же самое.
Почему ты не можешь сделать это так
Письмо Btn.enabled.State1
В Actionscript вы по сути говорите: дайте мне собственность под названием «State1» логического экземпляра, называемого «включен». Очевидно, что это не сработает, потому что у логического нет такой собственности. Вы сбиваете с толку нотацию MXML DOT (.) - используется для назначения значений свойствам на основе состояний - с нотацией DOTCSCRICT DOT - используется для свойств чтения/письма.
Решение или так близко, насколько это возможно
Поскольку это сама природа этой функции, которую вы бы использовали в MXML, вы не можете сделать именно то, что просите в ActionScript. Следующей лучшей вещью будет послушать StateChangeEvent Установите свойство кнопки «включено» в соответствии с новым именем состояния.
addEventListener(StateChangeEvent.CURRENT_STATE_CHANGE, onStateChange);
private function onStateChange(event:StateChangeEvent):void {
switch (event.newState) {
case "wrong": Btn.enabled = false; break;
case "correct": Btn.enabled = true; break;
}
}
(Я использую те же штаты, что и в ответе Джеймса)
Другие советы
Я думаю, что вы можете использовать состояния в неправильном контексте. Например, у вас есть компонент, который содержит пользовательский ввод с кнопкой рядом с ним. Кнопка включена только тогда, когда правильное слово вводится. Вы бы определили два состояния для компонента, возможно, correct
а также wrong
.
<s:states>
<s:State name="wrong" />
<s:State name="correct" />
<s:states>
Тогда вы, аналогично тому, что вы сделали выше, установите отдельные свойства для кнопок в зависимости от состояния:
<s:Button id="Btn" enabled.wrong="false" enabled.correct="true" />
По умолчанию состояние компонента будет wrong
. Анкет После обработки ввода пользователя и проверки введено ли правильное слово, состояние компонента будет изменено на correct
.
Обычно свойства компонентов, специфичные для состояния, устанавливаются во время компиляции, и состояние самого компонента меняется во время выполнения.