0

让我们看下一个例子:

<mx:State name="sayHello">
            <mx:SetProperty name="preText" target="{this}" value="Hello"><mx:SetProperty>
</mx:State>

我能以某种方式知道 preText 属性何时设置为 hello 吗?

已经尝试过:state->activate state->enterState state->exitState

UIComponent->currentStateChange

在上述所有情况下,pretext 属性为空,但不知何故,后来它得到了所需的值(我用计时器测试过)

任何帮助都会很棒!谢谢!

4

1 回答 1

0

很难说。Flex 框架实现的大多数属性都会调度 propertyChangedEvent。因此,在这种情况下,您可以在相关组件上侦听 preTextChanged 事件,让您知道属性已更改。

如果这是您自己实现的属性,只需让属性 set 方法调度事件,如下所示:

dispatchEvent(new Event('preTextChanged'));

像这样添加监听器:

this.addEventListener('preTextChanged',onpreTextChanged);

如果您没有为事件定义事件元数据,您将无法在 MXML 中侦听属性更改事件;并且大多数组件都不会费心为 propertyChanged 事件定义元数据。

改变状态的行为可能需要时间。由于 Flex/Flash Player 的异步特性,如下所示:

currentState = newState
trace(preText);

由于尚未进行状态更改处理,因此很可能尚未设置跟踪值。你也许可以收听currentStateChange事件。当调度您的属性时,应该全部修改。

于 2010-08-28T02:07:36.837 回答