2010-12-21 11 views
0

Ich habe eine Schaltfläche mit variabler Länge von Beschriftungstext. Ich habe eine Benutzereinstellung, die den Beschriftungstext auf dieser Schaltfläche ein- oder ausschalten kann.Flex: Ausblenden (oder Entfernen) von Beschriftungstext ohne Ändern der Tastengröße

Wie kann ich das umsetzen?

HINWEIS: Der Hintergrund der Schaltfläche weist eine Verlaufsfarbe auf.

Ich versuchte mit BlendMode.LAYER, kein Glück;

versuchte ich Button.resizeHandler

private function resizeHandler(event:ResizeEvent):void 
    { 
     if (event.oldWidth > this.width) 
      this.width = event.oldWidth; 
     if (event.oldHeight > this.height) 
      this.height = event.oldHeight; 
    } 

aber es funktionierte nur, wenn der anfängliche Benutzereinstellung Wert true verwendet.

Wie wäre es mit eingebetteten Schriften? Ich weiß nicht, wie man es auf Knopf anwendet

Antwort

0

Sie können mx.controls.Button erweitern, um eine Funktion zum Ein-/Ausblenden von Beschriftungen hinzuzufügen. Das Textfeld ist eine geschützte Eigenschaft, sodass Sie die Sichtbarkeit in Ihrer Funktion einfach aktivieren oder deaktivieren können. Verlassen Sie Flex, um alles selbst korrekt zu messen.

Wenn Sie die Schaltfläche vergrößern/verkleinern möchten, wenn der Text ein- oder ausgeschaltet ist, können Sie auch die Breite der Schaltfläche festlegen. Sie müssen die Breite basierend auf der Textfeldbreite berechnen.

+0

schließlich gab ich auf, an dem Knopf selbst zu arbeiten. Ich habe eine Leinwand erweitert und zwei Knöpfe platziert, um zu simulieren, was ich brauche. –

0

Was passiert, wenn Sie nur die Breite des Knopfes einstellen? Auf diese Weise sollte es eine konstante Breite sein, egal, was Sie als Etikett festlegen.

Höchstwahrscheinlich wird die Breite in der updateDisplayList-Methode berechnet. Der Code in Ihrem Größenänderungs-Handler wird möglicherweise beim nächsten Render-Ereignis zurückgesetzt.

+0

Ich möchte unterschiedliche Breite für Schaltflächen mit unterschiedlichem Text haben, so gibt es keine Möglichkeit, die Breite zu erhalten. –

+0

@Peter Lee: Also, welches Verhalten willst du? Wenn Sie keine feste Schaltflächenbreite angeben möchten, sehe ich nur Verhaltensweisen, die Ihren Anforderungen entsprechen: Vergrößern Sie die Schaltfläche auf den längsten Text, aber verkleinern Sie nicht ... ODER lassen Sie den Text innerhalb der Schaltfläche umbrechen. Abgesehen davon, dass Sie die Breite auf eine große Größe festlegen, ist nicht klar, was Sie eigentlich mit dieser Schaltfläche tun möchten. –

+0

@Peter Lee schauen Sie sich die Methoden getExplicitOrMeasuredHeight() und getExplicitOrMeasuredWidth() oder die MeasuredWidth/measuredHeight an. Wenn Sie die Breite und Höhe auf measuredWidth bzw. measuredHeight einstellen, wenn die Beschriftung auf der Schaltfläche steht; Wenn das Etikett entfernt wird, sollte es ordnungsgemäß dimensioniert sein. (Angenommen, Sie haben Code, um die Größenänderung zu verhindern, wenn das Etikett nicht vorhanden ist). – JeffryHouser

1

Sie können die Eigenschaft minWidth und maxWidth verwenden. minWidth, um die minimale Breite anzugeben, die die Schaltfläche haben soll. und maxWidth, um die maximale Breite anzugeben, die die Schaltfläche haben kann.

Verwandte Themen