2010-10-20 7 views

Respuesta

9

Si está hablando de estados de vista la respuesta es sí, puede escuchar el evento enterState de esta manera (lo siento por la simplicidad del ejemplo, es parte de un proyecto en el que estoy trabajando y eliminé las partes relevantes del código):

<?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> 

Y hay un evento exitState en caso de que lo necesite. Espero que esto te ayude.

15

Sé que esta pregunta es viejo, pero buscando en Google para los eventos de cambio de estado me dan aquí por lo que para la gente que quiera saber:

hay un evento StateChangeEvent.CURRENT_STATE_CHANGE que se distribuye por el componente, por lo que su aplicación también puede escucha eso.

En su función de oyente, puede acceder a las propiedades StateChangeEvent.oldState y StateChangeEvent.newState.

0

hay varios eventos de estado se pueden detectar en cualquier clase UIComponent:

  • FlexEvent.STATE_CHANGE_COMPLETE
  • FlexEvent.STATE_CHANGE_INTERRUPTED
  • StateChangeEvent.CURRENT_STATE_CHANGING
  • StateChangeEvent.CURRENT_STATE_CHANGE
  • FlexEvent. ENTER_STATE
  • FlexEvent.EXIT_STATE

MXML:

<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 

         enterState="windowedapplication1_enterStateHandler(event)" 
         exitState="windowedapplication1_exitStateHandler(event)" 
         currentStateChange="windowedapplication1_currentStateChangeHandler(event)" 
         currentStateChanging="windowedapplication1_currentStateChangingHandler(event)" 
         stateChangeInterrupted="windowedapplication1_stateChangeInterruptedHandler(event)" 
         stateChangeComplete="windowedapplication1_stateChangeCompleteHandler(event)"> 

    <fx:Script> 
     <![CDATA[ 
      import mx.events.FlexEvent; 


      protected function windowedapplication1_stateChangeCompleteHandler(event:FlexEvent):void 
      { 

      } 

      protected function windowedapplication1_stateChangeInterruptedHandler(event:FlexEvent):void 
      { 

      } 

      protected function windowedapplication1_currentStateChangeHandler(event:StateChangeEvent):void 
      { 
       var oldState:String = event.oldState; 
       var newState:String = event.newState; 
      } 

      protected function windowedapplication1_currentStateChangingHandler(event:StateChangeEvent):void 
      { 
       var oldState:String = event.oldState; 
       var newState:String = event.newState; 
      } 

      protected function windowedapplication1_enterStateHandler(event:FlexEvent):void 
      { 

      } 

      protected function windowedapplication1_exitStateHandler(event:FlexEvent):void 
      { 

      } 
     ]]> 
    </fx:Script> 
</s:WindowedApplication> 
Cuestiones relacionadas