В Flex 4.5 как вы можете использовать getStyleDeclaration для стиля в пользовательском пространстве имен CSS? - PullRequest
0 голосов
/ 11 января 2012

Я не уверен, что мне здесь не хватает.В моем проекте Flex есть несколько пользовательских пространств имен, а также обычные пространства имен, такие как "mx" и "s".

Я бы хотел использовать getStyleDeclaration для стиля, который находится в пользовательском пространстве имен, и я не могу понять правильный синтаксис.

Моя таблица стилей выглядит частично так:

.WidgetTitle
{
    fontWeight: bold;
}

myNamespace|ScaleBar
{
    right: 10;
    bottom: 20;
    left: NaN;
    top: NaN;
} 

Если я пытаюсь использовать getStyleDeclaration для ".WidgetTitle", он работает нормально:

trace(styleManager.getStyleDeclaration(".WidgetTitle")); // output: [object CSSStyleDeclaration]

Если я пытаюсь сделать то же самое с настраиваемым пространством имен, выводится ноль:

trace(styleManager.getStyleDeclaration("myNamespace|ScaleBar")); // output: null

Я перепробовал все возможные комбинации: «myNamespace | ScaleBar», «myNamespace.ScaleBar», «myNamespace ScaleBar» и т. Д., И я не могу найти никакой документации о том, как это сделать.

Спасибо

1 Ответ

0 голосов
/ 12 января 2012

Пользовательская кнопка в пакете myComps:

package myComps
{
    import spark.components.Button;

    public class MyButton extends Button
    {

    }
}

В классе приложения:

<fx:Style>
    @namespace myComps "myComps.*";

    myComps|MyButton{
        color: #ff0000;
        fontSize: 30;
    }
</fx:Style>

и

<fx:Script><![CDATA[
    private function _creationCompleteHandler():void
    {
        var css:CSSStyleDeclaration = styleManager.getStyleDeclaration("myComps.MyButton");
        trace("fontSize", css.getStyle("fontSize"));
        trace("color", css.getStyle("color"));
    }
]]></fx:Script>

трассировка:

[trace] fontSize 30
[trace] color 16711680

Для меня это работает.

...