Вопрос гибких состояний - PullRequest
0 голосов
/ 24 июня 2009

Мне нужно выяснить, в каком состоянии я сейчас просматриваю. Предположим, что ...

<mx:states>
        <mx:State name="state1">

            </mx:AddChild>
        </mx:State>

        <mx:State name="state2">

            </mx:AddChild>
        </mx:State>

</mx:states>

Когда я вхожу в свое приложение, появляется состояние1, но при обновлении страницы оно снова исчезает.

У меня значение сеанса на данный момент, просто нужно проверить, является ли сеанс истинным, затем сохранить текущее состояние или вернуться к состоянию по умолчанию.

Ответы [ 2 ]

1 голос
/ 24 июня 2009

Вы можете определить текущее состояние из свойства currentState компонента. В flex 3 состояние по умолчанию - пустая строка. Когда вы обновляете страницу браузера (кто это делает при использовании флэш-приложения?), Вы фактически перезагружаете все флэш-приложение, то есть все ваши компоненты будут воссозданы. Поэтому, если вы проверите свой сеанс, вам необходимо соответствующим образом назначить currentState вашего компонента.

Таким образом, на основе вашего примера кода, если вы просматриваете состояние 2, currentState вашего компонента, который определяет состояние, теперь будет "state2". Это значение, которое вы указали в качестве названия вашего второго состояния. Чтобы установить просмотр в первое состояние, вы можете сделать

component.currentState = "state1";

так как это название вашего первого штата. Чтобы перейти в исходное (исходное) состояние, вам нужно сделать:

component.currentState = "";

Чтобы убедиться, что вы находитесь во втором состоянии, вы должны сделать

if (component.currentState == "state2")
  doSomething();

Если ваше второе состояние будет называться «секундное состояние» вместо «состояние2», вы будете использовать:

if (component.currentState == "secondstate")
      doSomething();

По крайней мере, так будет во Flex 3, потому что, как я понимаю, во Flex 4 внесены некоторые изменения, связанные с состояниями.

0 голосов
/ 24 июня 2009

В соответствии с вышесказанным, вот несколько примеров кода:

В компоненте вы должны ссылаться на this.currentState или просто currentState:

private function checkCurrentState():void
{
    alert(this.currentState);
}

или, если вы отлаживаете, просто используйте оператор trace():

trace(this.currentState);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...