Flex: Bearbeiten Sie eine embedded-Symbol und verwenden Sie es in einem button?
Nur, dass, wenn Sie das einbetten-Symbol:
[Embed(source='icons/checkmark.png')]
private static var CheckMark:Class;
Dass Sie am Ende mit einer dynamischen Klasse. Sie können ziemlich leicht zuweisen-Symbol, um eine Schaltfläche zur Laufzeit durch die setStyle-Methode:
var btn:Button = new Button();
btn.setStyle("icon", CheckMark);
Aber was, wenn Sie wollten, ändern Sie das Symbol zur Laufzeit, wie verändert sich der alpha-Wert oder sogar Neuzeichnen Pixel, bevor er Sie auf die Taste?
So weit ich kann nicht finden, eine zufriedenstellende Antwort...
InformationsquelleAutor Aaron H. | 2008-10-01
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist die einzige Antwort, die ich finden konnte, schien in der Nähe: Dynamische Symbole (Beispiel mit Quelltext Anzeigen)
Seine Lösung beinhaltet eine eigene "DynamicIcon" - Klasse, die verwendet wird, in der Sie das Symbol der Schaltfläche festlegen, und eine benutzerdefinierte Schaltfläche Klasse, die fügt eine Methode für das Button-Klasse zu ziehen, dynamische Symbole.
Das Endergebnis ist, dass Sie in der Lage sind, zu senden BitmapData der DynamicIcon Klasse, die auf der Schaltfläche angezeigt wird. So, binden Sie Ihr Bild, instanziieren Sie Ihr asset-Klasse, bekommen die bitmapasset-und ändern Sie es wie Sie brauchen, und senden Sie die bitmapData-um das Symbol.
Es ist ein Interessantes problem und wie es scheint, sollte es eine einfachere Lösung, aber so funktioniert es, ohne viel Aufwand.
Die Möglichkeit, ich würde dies lösen, ist die Umsetzung eines programmatischen Haut Klasse, das zeichnet das icon selbst manuell. Es ist wahrscheinlich mehr Arbeit, die Sie tun müssen, um sicherzustellen, die Schaltfläche berechnet die richtige Größe, als ob es ein Symbol hat, obwohl es nicht. Sie müssen möglicherweise Sack durch die Taste source code schauen, wie der Verweis auf das-Symbol gespeichert ist.
Ich Liebe einfach erstellen programmatischen skins, die genau das tun, was ich will und dann mit interessanten CSS-Angaben zu ändern, Staaten - zum Beispiel:
und dann natürlich die Haut oder das eigene button-Klasse haben würde:
(nicht sicher, wenn Sie typecast, dass man)
Das große problem, das ich fand, programmatischen skins ist, dass der Knopf sich weigert, Messen Sie die Breite/Höhe. Ich einfach habe, um dieses durch überschreiben der get-Methoden für alle:
override public function get width():Number { return BREITE; }
override public function get height():Number { return HEIGHT; }
In meinem Fall musste ich ändern-buttons in einem TabNavigator-Container, daher keine einfache Möglichkeit, eine Unterklasse der Taste. Zum Glück, die Eltern von jeder Haut ist die Taste, so dass die Verwendung von statischen Methoden in Ihre Haut, können Sie identifizieren die Instanz der Schaltfläche, auf die der Symbol-skins gehören.
Wenn Sie die cover-all "icon" - Stil, eine neue skin-Objekt erstellt werden, die für jeden Mitgliedstaat. So werden Sie brauchen, um beachten Sie dies, wenn nach dem ändern des Status der Symbole.