Domanda

Sto creando un componente e voglio esporre una proprietà color come fanno molti controlli flex, diciamo che ho un componente semplice come questo, chiamiamolo foo_label:


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

e quindi aggiungi il componente in un altro file mxml, qualcosa del tipo:


<foo:foo_label color="red" />

Quando compilo il compilatore si lamenta: impossibile analizzare il valore di tipo uint dal testo 'rosso'. Tuttavia, se uso un'etichetta semplice, posso farlo

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

senza alcun problema e la proprietà color è ancora del tipo uint.

La mia domanda è: come posso esporre una proprietà pubblica in modo da poter controllare il colore del testo dei miei componenti? Perché posso usare la stringa " red " come campo uint per i controlli mx ma non riesco a fare lo stesso in un componente personalizzato, devo fare qualcosa di speciale?

Grazie.

È stato utile?

Soluzione

Il colore non è una proprietà, è uno stile. Devi definire lo stile in questo modo:

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

(racchiudilo nel tag se lo definisci direttamente in MXML). È quindi necessario aggiungere un po 'di ActionScript per gestire questo stile e applicarlo a qualsiasi controllo sia necessario, fare riferimento a http://livedocs.adobe.com/flex/3/html/help.html?content=skinstyle_1.html per ulteriori informazioni.

Altri suggerimenti

Ecco 2 delle mie funzioni utils:

    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;  
    }     
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top