Hallo zusammen!
Habe basierend auf dem
IconUtility von Ben Stucki eine Klasse geschrieben, die für das FlexMenu Icons zur Laufzeit laden kann.
public class DynamicMenuIcon extends BitmapAsset
Sie beinhaltet eine static function getIcon, die den Typ Class zurück gibt, sowie man es für die iconFunction benötigt. Da Flex beim erstellen die Klasse parameterlos instanziert, werden die parameter der getIcon function in einem static dictionary gespeichert. Bei der Instanzierung, werden dann, über einen Vergleich mit dem parent Objekt, die entsprechenden Daten wieder aus dem Dictionary ausgelesen.
Momentan ist es nur vorgesehen, dass das an die iconFunction übergebene element ein XML ist, sollte sich aber bei Bedarf relativ schnell abändern lassen.
Verwendungsbeispiele:
1. direkt als iconFunction (keine Größenangaben möglich, Quelle muss im Attribut "iconSource" der Itemnode stehen)
PHP-Code:
//Beispiel node: <submenu11 label="menu 1-1" iconSource="icons/pic_01.jpg"/>
var submenu :Menu = myMenuBar.getMenuAt(0);
submenu.iconFunction = DynamicMenuIcon.getIcon;
2. in einer iconFunction, hier können dann auch Zielgröße und quellattribut angegeben werden.
PHP-Code:
//Beispiel node: <submenu11 label="menu 1-1" myIconSource="icons/pic_01.jpg"/>
var submenu :Menu = myMenuBar.getMenuAt(0);
submenu.iconFunction = generateIcon;
private function generateIcon( node:XML):Class
{
return DynamicMenuIcon.getIcon( node, 40, 30, "@myIconSource");
}
Bugs und Verbesserungsvorschläge bitte hier posten.
Updates kommen dann auch wieder hierhin.
Enjoy