0

好的,有人可以告诉我在 Flex 4 中在 mxml 中执行状态的真实语法吗???

我已经看到了以下两个(并且都实现了)并且不知道哪种方式是“正确的”或首选的。

在里面<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>
4

1 回答 1

2

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

这个语法:

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

这将创建三个状态变量作为一个数组,并将它们分配给顶级组件的 state 属性。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);

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

于 2011-09-28T22:50:29.263 回答