代码之家  ›  专栏  ›  技术社区  ›  Rad'Val

当mx:state标记中的所有操作完成时,flex中是否有一个事件会触发?

  •  0
  • Rad'Val  · 技术社区  · 14 年前

    下面我们举个例子:

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

    不知何故,我能知道何时将“借口”属性设置为“你好”吗?

    已尝试使用: 状态->激活 状态->EnterState 状态->退出状态

    uicomponent->当前状态更改

    在上面的所有情况下,pretext属性都是空的,无论如何,后来它得到了所需的值(我用计时器测试过)。

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

    1 回复  |  直到 14 年前
        1
  •  0
  •   JeffryHouser    14 年前

    很难说。大多数由flex框架实现的属性都会调度一个propertychangedevent。因此,在本例中,您可以监听相关组件上的pretextChanged事件,让您知道属性发生了更改。

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

    dispatchEvent(new Event('preTextChanged'));
    

    像这样添加侦听器:

    this.addEventListener('preTextChanged',onpreTextChanged);
    

    如果不为事件定义事件元数据,则无法在MXML中侦听属性更改事件;而且大多数组件都不需要为属性更改事件定义元数据。

    改变一个状态的行为可能需要时间。由于flex/flash播放器的异步特性,如下所示:

    currentState = newState
    trace(preText);
    

    跟踪值很可能尚未设置,因为尚未进行状态更改处理。你可以听 currentStateChange 事件,thoug。当发送时,您的属性都应该被修改。