Pergunta

Estou criando um componente e deseja expor uma propriedade de cor como muitos controles Flex fazer, digamos que eu tenho componente simples como este, vamos chamá-lo foo_label:


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

e, em seguida, adicione o componente em outro arquivo mxml, algo ao longo das linhas de:


<foo:foo_label color="red" />

Quando eu compilar o compilador reclama: pode não o valor de análise do tipo uint a partir do texto 'vermelho'. No entanto, se eu usar uma etiqueta simples que posso fazer

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

sem problemas, ea propriedade cor ainda é tipo uint.

A minha pergunta é como eu posso expor uma propriedade pública para que eu possa controlar a cor do meu texto componentes? Por que eu posso usar a string "vermelho" como um campo uint para os controles mx mas parece que não pode fazer o mesmo em um componente personalizado, eu preciso fazer alguma coisa especial?

Graças.

Foi útil?

Solução

A cor não é uma propriedade, é um estilo. Você precisa definir o estilo parecido com isto:

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

(coloque-a tag se você defini-lo diretamente no MXML). Você precisa então adicionar um pouco de ActionScript para lidar com este estilo e aplicá-lo a qualquer controle que você precisa, consulte o http://livedocs.adobe.com/flex/3/html/help.html?content=skinstyle_1.html para obter mais informações.

Outras dicas

Aqui estão 2 das minhas funções 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;  
    }     
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top