Frage

Nur, dass, wenn Sie betten ein Symbol:

[Embed(source='icons/checkmark.png')]
private static var CheckMark:Class;

Sie enden mit einer dynamischen Klasse auf. Sie können ziemlich leicht auf das Symbol auf eine Schaltfläche zur Laufzeit zuweisen, indem Sie die setStyle Methode aufrufen:

var btn:Button = new Button();
btn.setStyle("icon", CheckMark);

Was aber, wenn man wollte das Symbol zur Laufzeit verändern, wie das Ändern es Alpha-Wert ist oder sogar Pixel neu zu zeichnen, bevor es an die Taste zuweisen?

Bisher kann ich keine befriedigende Antwort finden ...

War es hilfreich?

Lösung

Dies ist die einzige Antwort, die ich, die nahe schien gefunden: Dynamische Icons < a href = "http://blog.xsive.co.nz/flex_source/button_icon_drawing/ButtonTest.html" rel = "nofollow noreferrer"> (Beispiel mit View Source)

Seine Lösung besteht darin, eine eigene „DynamicIcon“ Klasse, die in der Schaltfläche Symbol Einstellung verwendet wird, und eine benutzerdefinierte Button-Klasse, die eine Methode, um die Button-Klasse fügt dynamische Symbole zu zeichnen.

Das Endergebnis ist, dass Sie BitmapData- zur DynamicIcon Klasse zu senden sind in der Lage, die in der Schaltfläche angezeigt wird. So betten Sie Ihr Bild, instanziiert Ihre Asset-Klasse, bekommen die Bitmap und ändern Sie es jedoch müssen Sie und die bitmapdata auf das Symbol senden.

Es ist ein interessantes Problem, und es scheint, wie es sollte eine einfachere Lösung sein, aber das funktioniert, ohne viel Aufwand.

Andere Tipps

So wie ich dieses Problem lösen würde, ist eine programmatische Haut Klasse zu implementieren, die das Symbol selbst von Hand zieht. Es gibt wahrscheinlich mehr Arbeit Sie auf den Button tun müssen, um sicherzustellen, berechnet die richtige Größe, als ob es ein Symbol hat, obwohl dies nicht der Fall. Sie können durch das Button-Quellcode stoßen müssen schauen, wie der Verweis auf das Symbol gespeichert wird.

Ich liebe programmatische Skin erstellen, die genau das tun, was ich will und dann interessant CSS-Deklarationen mit Staaten ändern - zum Beispiel:

button.setStyle("customIconAlpha", .4);

und dann natürlich die Haut oder die benutzerdefinierte Schaltfläche Klasse würde:

var alpha:Number = getStyle("customIconAlpha") as Number;

(nicht sicher, ob Sie typisieren, dass ein)

Das große Problem, das ich mit programmatischen Häuten gefunden ist, dass die Taste, um die Breite / Höhe messen will. Ich um diesen leicht bekam durch Überschreiben der get-Methoden für jeden:

außer Kraft setzen get Breite public function (): Number {return WIDTH; } außer Kraft setzen get Höhe public function (): Number {return Höhe; }

In meinem Fall musste ich Tasten in einem TabNavigator ändern, damit keine einfache Möglichkeit, die Schaltfläche Unterklasse. Zum Glück, die Eltern jeder Haut ist die Taste, so dass statische Methoden in der Haut verwenden, können Sie die Instanz der Button identifizieren, zu der die Symbol Skin gehören.

Wenn Sie das Cover-all „Symbol“ Stil verwenden, eine neue Haut Objekt wird für jeden Zustand erstellt werden. So müssen Sie dies im Auge behalten, wenn der Zustand der Symbole zu ändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top