Domanda

posso fare questo:

<s:Button id="Btn" enabled.State1="false" />

Ma il seguente codice è mi dà un errore.

 private function enableDisable():void{
       Btn.enabled.State1="false";  //Error: Access of undefined property State1
      }

come codice enabled.State1 in ActionScript?

Grazie

È stato utile?

Soluzione

So che questo non è ciò che si desidera ascoltare, ma qui va comunque: perché vuoi farlo? Lo scopo degli stati è che non avrebbe dovuto scrivere tonnellate di ActionScript per fare la stessa cosa.

Perché non si può fare così

Con la scrittura Btn.enabled.State1 in ActionScript che stai dicendo in sostanza: dammi la proprietà denominata 'State1' dell'istanza booleano chiamato 'abilitato'. Ovviamente questo non funzionerà perché un booleano non hanno una tale proprietà. Stai confondendo il MXML notazione del punto (.) - utilizzato per l'assegnazione di valori alle proprietà basate sugli stati - con l'ActionScript notazione -. Utilizzato per la lettura / scrittura di proprietà

Una soluzione o il più vicino come si arriva

Dal momento che è la natura stessa di questa funzione che si usa in MXML, non si può fare esattamente quello che stai chiedendo in ActionScript. La cosa migliore da fare sarebbe quella di ascoltare StateChangeEvent it impostare il pulsante del 'abilitato' immobile secondo il nuovo nome dello stato.

addEventListener(StateChangeEvent.CURRENT_STATE_CHANGE, onStateChange);

private function onStateChange(event:StateChangeEvent):void {
    switch (event.newState) {
        case "wrong":   Btn.enabled = false; break;
        case "correct": Btn.enabled = true; break;
    }
}

(sto usando gli stessi stati, come in risposta James')

Altri suggerimenti

Penso che si sta utilizzando gli stati nel contesto sbagliato. Per esempio, avete componente che contiene un input dell'utente con un pulsante accanto ad essa. Il pulsante è abilitato solo quando la parola corretta è ingresso. Si potrebbe definire due stati per il componente, forse correct e wrong.

<s:states>
    <s:State name="wrong" />
    <s:State name="correct" />
<s:states>

Si potrebbe quindi, simile a quello che hai fatto in precedenza, impostare le proprietà individuali per i tasti a seconda dello stato:

<s:Button id="Btn" enabled.wrong="false" enabled.correct="true" />

Per impostazione predefinita, lo stato del componente sarebbe wrong. Dopo aver toccato input dell'utente e controllando se viene immessa la parola corretta, lo stato del componente verrebbe modificato correct.

Normalmente le proprietà specifiche di stato dei componenti vengono impostati in fase di compilazione e lo stato del componente stesso modificato in fase di esecuzione.

Ecco una panoramica degli stati in Flex 4.6

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top