Domanda

Se sto creando diciamo un campo di input attraverso MXML, posso impostare la larghezza su 100%. Ma non riesco a farlo in fase di esecuzione tramite ActionScript.

Funziona:

<mx:TextInput ... width="100%" />

Questo non verrà compilato, dice che la larghezza è un numero, non una stringa:

var textinp:TextInput = new TextInput();
someContainer.addChild(textinp);
textinp.width = "100%"

Come posso impostare <=> come dimensione su un componente creato in fase di esecuzione tramite ActionScript?

È stato utile?

Soluzione

Devi solo usare l'attributo percentWidth, invece dell'attributo width.

Quindi, la terza riga nel tuo codice sarebbe:

textinp.percentWidth = 100;

Anche questo mi ha fatto inciampare per un po '.

Altri suggerimenti

Se in seguito desideri tornare alle larghezze basate su pixel per lo stesso componente, qui & # 8217; s cosa devi fare:

textinp.percentWidth = NaN;

La risposta sopra è corretta, ma non posso commentarla perché sono troppo nuovo per SO.

Quando vuoi aggiungere questa funzionalità a un componente personalizzato, puoi fare qualcosa del genere:

[PercentProxy("percentMultiplier")]
public function set multiplier(value:Number):void
{
  _multiplier = value;
  invalidSomethingOrDoSomething();
}

public function set percentMultiplier(value:Number):void
{
  multiplier = value / 100;
}

Naturalmente, quando lo fai per larghezza, le sottoclassi del contenitore stanno cercando percentWidth e non ispezionano la metada, quindi non chiamarla widthInPercent o qualcosa del genere, anche se puoi.

Ecco la risposta:

var textinp:TextInput = new TextInput();
someContainer.addChild(textinp);
textinp.percentWidth = 100;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top