开发者

Is there an event in Flex that shoots out when all the operations in a mx:state tag are done?

Let's take the next example:

<mx:State name="sayHello">
            <开发者_C百科;mx:SetProperty name="preText" target="{this}" value="Hello"><mx:SetProperty>
</mx:State>

Can I somehow know when preText property has been set to hello?

Already tried with: state->activate state->enterState state->exitState

and

UIComponent->currentStateChange

In all the cases above,pretext property is null, how ever somehow, later on it gets the desired value (I tested with a timer)

Any help would be great! Thanks!


It is tough to say. Most properties implemented by the Flex Framework dispatch a propertyChangedEvent. So, in this case you could listen to preTextChanged event on the component in question to let you know that the property changed.

If this is a property you implemented yourself, just make the properties set method dispatch the event, like this:

dispatchEvent(new Event('preTextChanged'));

Add the listener like this:

this.addEventListener('preTextChanged',onpreTextChanged);

You won't be able to listen to the property change event in MXML if you don't define event metadata for the event; and most components do not bother to define metadata for the propertyChanged event.

The act of changing a state can take time. Due to the asynchronous nature of Flex/Flash Player something like this:

currentState = newState
trace(preText);

The trace value will most likely not be set yet because the state change processing did not occur yet. You may be able to listen to the currentStateChange event, thoug. When that dispatches your properties should all be modified.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜