Apache flex Flex 4状态--”;“正确”;语法

Apache flex Flex 4状态--”;“正确”;语法,apache-flex,syntax,adobe,states,Apache Flex,Syntax,Adobe,States,好的,有人能告诉我Flex4中mxml中执行状态的REAL语法吗 我已经看到了以下两种方法(并且都实现了),但不知道哪种方法是“正确的”还是首选的 在 ... ... 或 组件中的“最顶层”级别 ... 可能是第二个;但这取决于你想做什么 此语法: <fx:Declarations> ... <s:State name="state1" /> <s:State name="state2" /> <s:State name="stat

好的,有人能告诉我Flex4中mxml中执行状态的REAL语法吗

我已经看到了以下两种方法(并且都实现了),但不知道哪种方法是“正确的”还是首选的


...
...

组件中的“最顶层”级别

...

可能是第二个;但这取决于你想做什么

此语法:

<fx:Declarations>
  ...
  <s:State name="state1" />
  <s:State name="state2" />
  <s:State name="state3" />
</fx:Declarations>
在组件上创建状态时,您可能需要做的不仅仅是创建状态。您希望将状态指定为当前组件的状态

这就是您的第二种语法的实际功能:

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

编译器完全有可能在第一个语法上使用一些魔法来创建这些状态实例并将它们分配给states数组,但我不确定。我以前从未见过有人使用这种语法。我希望这两种方法都可以编译。我只希望第二种方法能够在您可以切换的组件上实际创建状态。

不,第一种方法可以很好地工作。事实上,这就是我写问题时的语法。在我的组件代码中的任何一点上,我仍然可以使用第一种方法来正确更改状态。这就是为什么我对差异如此困惑的原因。@istrasci那么Flex编译器一定在基于声明标记中类的“类型”的场景下发挥了一些魔力。我建议您使用第二个,即使是第一个works@exort虽然我并不反对;你的推理是什么?哦,很简单,因为我们确切地知道做了什么,也就是说,我们创建了一个状态对象数组,并将其设置为组件的States属性。我们不必假设编译器会在幕后完成它。然而,我同意最终结果将完全相同。
<fx:Declarations>
  ...
  <s:State name="state1" />
  <s:State name="state2" />
  <s:State name="state3" />
</fx:Declarations>
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>
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);