Вопрос

Я создаю компонент и хочу предоставить свойство color, как это делают многие элементы управления flex, допустим, у меня есть простой компонент, подобный этому, давайте назовем его foo_label:


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

а затем добавьте компонент в другой файл mxml, что-то вроде:


<foo:foo_label color="red" />

Когда я компилирую, компилятор жалуется:не удается разобрать значение типа uint из текста 'red'.Однако, если я использую простой ярлык, я могу сделать

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

без каких-либо проблем, и свойство color по-прежнему имеет тип uint.

Мой вопрос в том, как я могу предоставить общедоступное свойство, чтобы я мог управлять цветом текста моих компонентов?Почему я могу использовать строку "red" в качестве поля uint для элементов управления mx, но, похоже, не могу сделать то же самое в пользовательском компоненте, нужно ли мне делать что-то особенное?

Спасибо.

Это было полезно?

Решение

Цвет - это не свойство, это стиль.Вам нужно определить стиль следующим образом:

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

(заключите его в тег, если вы определяете его непосредственно в MXML).Затем вам нужно добавить какой-нибудь ActionScript для обработки этого стиля и применить его к любому элементу управления, который вам нужен, пожалуйста, обратитесь к http://livedocs.adobe.com/flex/3/html/help.html?content=skinstyle_1.html для получения дополнительной информации.

Другие советы

Вот вам 2 из моих утилит-функций:

    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;  
    }     
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top