Flex 4:状态变化事件

Chr*_*mbo 8 apache-flex actionscript-3 flex4

我可以使用Flex 4中的任何事件来检测状态变化吗?

Sie*_*ebe 16

我知道这个问题已经过时了,但是通过谷歌搜索状态变化事件,我仍然会到这里,所以想要知道的人:

有一个StateChangeEvent.CURRENT_STATE_CHANGE事件由组件调度,因此您的应用程序也可以监听它.

在您的侦听器函数中,您可以访问StateChangeEvent.oldStateStateChangeEvent.newState属性.


Die*_*ego 9

如果您正在讨论视图状态,答案是肯定的,您可以像这样监听enterState事件(抱歉示例的简单性,它是我正在处理的项目的一部分,我删除了代码的任何相关部分) :

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx"
           minWidth="800" minHeight="600"
           currentState="loading">

<fx:Script>
    <![CDATA[
        import mx.controls.Alert;

        private function onEnterLoadingState():void{
            Alert.show("Enter the loading state.", "Application");
        }

        private function onEnterLoginState():void{
            Alert.show("Enter the login state.", "Application");
        }

        private function onEnterAddState():void{
            Alert.show("Enter the addUser state.", "Application");
        }

        private function changeState(state:String):void{
            currentState = state;
        }
    ]]>
</fx:Script>

<s:states>
    <s:State name="loading" enterState="onEnterLoadingState()"/>
    <s:State name="login" enterState="onEnterLoginState()"/>
    <s:State name="addUser" enterState="onEnterAddState()"/>
</s:states>

<s:Panel id="loadView" includeIn="loading" title="Loading">
    <s:Button label="Go to login" click="changeState('login')"/>
</s:Panel>
<s:Panel id="loginView" includeIn="login" title="Login">
    <s:Button label="Go to addUser" click="changeState('addUser')"/>
</s:Panel>
<s:Panel id="addView" includeIn="addUser" title="AddUser">
    <s:Button label="Return to loading" click="changeState('loading')"/>
</s:Panel>
</s:Application>
Run Code Online (Sandbox Code Playgroud)

如果需要,还有一个exitState事件.我希望这可以帮助你.