Frage

Ich bin Erstellen einer Komponente und wollen eine Farbeigenschaft so viele flex Kontrollen tun belichten, sagen wir ich habe einfache Komponente wie diese, es lässt nennen foo_label:


<mx:Canvas>
    <mx:Script>
        [Bindable] public var color:uint;
    </mx:Script>
    <mx:Label text="foobar" color="{color}" />
</mx:Canvas>

und fügen Sie dann die Komponente in einer anderen MXML-Datei, etwas entlang der Linien von:


<foo:foo_label color="red" />

Wenn ich kompilieren der Compiler beschwert sich: kann nicht analysieren Wert vom Typ uint von Text ‚rot‘. Allerdings kann ich, wenn ich ein einfaches Etikett verwenden tun

<mx:Label text="foobar" color="red">

ohne Probleme, und die Farbeigenschaft ist noch uint geben.

Meine Frage ist, wie kann ich eine öffentliche Eigenschaft zu, so dass ich die Farbe meiner Komponenten Text steuern kann? Warum kann ich die Zeichenfolge „rot“ als uint Feld für die mx Steuerelemente verwenden, aber kann nicht scheinen, das gleiche in einer benutzerdefinierten Komponente zu tun, muß ich etwas Besonderes tun?

Danke.

War es hilfreich?

Lösung

Die Farbe ist keine Eigenschaft, es ist ein Stil. Sie müssen den Stil wie folgt definieren:

[Style(name="labelColor", type="uint", format="Color" )]

(es in Tag einschließen, wenn Sie es direkt in MXML definieren). Sie müssen dann einige Actionscript hinzuzufügen, diesen Stil zu handhaben und es auf welche auch immer Sie steuern müssen, finden Sie auf http://livedocs.adobe.com/flex/3/html/help.html?content=skinstyle_1.html für weitere Informationen.

Andere Tipps

Sie sind hier 2 meiner utils Funktionen:

    public static function convertUintToString( color:uint ):String {  
            return color.toString(16);  
    }  

    public static function convertStringToUint(value:String, mask:String):uint {  
            var colorString:String = "0x" + value;  
            var colorUint:uint = mx.core.Singleton.getInstance("mx.styles::IStyleManager2").getColorName( colorString );  

            return colorUint;  
    }     
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top