Flex 4 States - «правильный» синтаксис - PullRequest
0 голосов
/ 29 сентября 2011

ОК, может кто-нибудь сказать мне синтаксис REAL для выполнения состояний в mxml во Flex 4 ???

Я видел оба из следующих (и реализовал оба) ине знаю, какой путь является «правильным» или предпочтительным.

В <fx:Declarations>

<fx:Declarations>
  ...
  <s:State name="state1" />
  <s:State name="state2" />
  <s:State name="state3" />
</fx:Declarations>

<s:Button id="button1" ... />
...
<more components>

ИЛИ

«Самый верхний» уровень в компоненте

<s:states>
  <s:State name="state1" />
  <s:State name="state2" />
  <s:State name="state3" />
</s:states>

<s:Button id="button1" ... />
...
<more components>

1 Ответ

2 голосов
/ 29 сентября 2011

Вероятно, второй; но это зависит от того, что вы пытаетесь сделать.

Этот синтаксис:

<fx:Declarations>
  ...
  <s:State name="state1" />
  <s:State name="state2" />
  <s:State name="state3" />
</fx:Declarations>

Создает три переменные внутри компонента класса State. Это было бы то же самое, что делать что-то подобное в ActionScript:

var myState1 : State = new State();
var myState1 : State = new State();
var myState1 : State = new State();

При создании состояний для компонента вы, вероятно, захотите сделать больше, чем просто создать состояние. Вы хотите назначить состояние как состояние текущего компонента.

Вот что на самом деле делает ваш второй синтаксис:

<s:states>
  <s:State name="state1" />
  <s:State name="state2" />
  <s:State name="state3" />
</s:states>

Это создает три переменные состояния в виде массива и присваивает их свойству состояния компонента верхнего уровня. Концептуально так в ActionScript:

var myState1 : State = new State();
var myState1 : State = new State();
var myState1 : State = new State();
this.states = new Array();
this.states.push(myState1);
this.states.push(myState2);
this.states.push(myState3);

Вполне возможно, что компилятор выполняет некоторые действия над первым синтаксисом, чтобы создать эти экземпляры состояний и назначить их массиву состояний, но я не уверен. Я никогда не видел, чтобы кто-нибудь использовал этот синтаксис раньше. Я ожидаю, что оба подхода к компиляции. Я ожидал бы только, что второй подход фактически создаст состояния в компоненте, между которым вы можете переключаться.

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