1

在 Flex 4 中是否允许在 Spark MXML 项目渲染器中使用状态?

我在问这个,因为已经有“内置”状态,比如

<s:states> 
    <s:State name="normal"/> 
    <s:State name="hovered"/> 
</s:states> 

我可以添加自己的自定义状态,例如“ingame”和“inlobby”吗?

即使我在 MXML 项目渲染器中的 AS3 代码不使用/不需要它们,我是否仍应写出“正常”和“悬停”?

4

1 回答 1

3

在 Flex 4 中是否允许在 Spark MXML 项目渲染器中使用状态?

是的!渲染器只是一个组件,就像任何其他组件一样;如果你愿意,你可以添加状态。

我不确定 Flex 列表如何处理设置渲染器的状态。因此,您的渲染器中的状态似乎可能会从您的“自定义”状态更改为 Flex 状态之一。您可能必须覆盖 currentState 变量以防止此类更改。

即使我在 MXML 项目渲染器中的 AS3 代码不使用/不需要它们,我是否仍应写出“正常”和“悬停”?

不,如果您不需要它们,请不要添加它们。当发生鼠标交互(如悬停)时,ItemRenderer最终将调用其getCurrentRendererState()方法来决定在渲染器上设置什么状态。在该方法中,有许多这样的语句:

if (hovered && hasState("hovered"))
    return "hovered";

如果没有匹配,它将保持渲染器的状态不变。

于 2013-07-03T18:13:02.150 回答