Вопрос

я могу сделать это:

<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.

Обычно свойства компонентов, специфичные для состояния, устанавливаются во время компиляции, и состояние самого компонента меняется во время выполнения.

Вот Обзор состояний в Flex 4.6

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top