errorSkin при проверке Spark TextInput - PullRequest
1 голос
/ 14 марта 2011

Возможно, я принимаю сумасшедшие таблетки, но кто-нибудь заставил работать функцию errorSkin?Я не делаю ничего сумасшедшего, просто расширяю TextInput (spark) и устанавливаю свойство errorSkin.

Я пытался создать скин с помощью SparkSkin, ничего не сделал.Я попытался создать скин с помощью ProgrammaticSkin, ничего не сделал.

TextInput всегда красная граница.Я знаю, что вы можете установить errorColor и errorString, но я, очевидно, хочу сделать больше, чем просто изменить цвет границы.Я компилирую, используя Flex 4.1.

Есть идеи?

Реализация:

<components:PromptedTextInput id="txt"
        width="200"
        horizontalCenter="0"
        verticalCenter="0"
        errorSkin="skins.TestSkin" />

Класс

public class PromptedTextInput extends TextInput
{

    public function PromptedTextInput()
    {
        super();
    }

}

Скин ошибки:

<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Metadata>
    <![CDATA[

    [HostComponent("spark.components.TextInput")]

    ]]>
</fx:Metadata>

<s:states>
    <s:State name="normal" />
    <s:State name="disabled" />
    <s:State name="error" />
</s:states>

<!-- fill -->
<s:Rect id="background"
        left="1" right="1" top="1" bottom="1">
    <s:fill>
        <!--- Defines the background fill color. -->
        <s:SolidColor id="bgFill"
                color="#66CC66" />
    </s:fill>
</s:Rect>
</s:SparkSkin>

Еще одна ошибка скина Попытка:

public class TestSkin extends ProgrammaticSkin
{
    public function TestSkin()
    {
        super();
    }

    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
    {
        super.updateDisplayList(unscaledWidth, unscaledHeight);
        graphics.clear();
        graphics.beginFill(0x33CC33);
        graphics.drawRect(0, 0, unscaledWidth, unscaledHeight);
        graphics.endFill();
    }
}

Ответы [ 2 ]

1 голос
/ 17 марта 2011

Ну, это не красиво, но похоже, что есть две скины, которые нужно изменить. ErrorSkin и FocusSkin. Хорошей новостью является то, что вы можете сделать их одинаковыми. Для скинов, просто для тестирования, я просто полностью скопировал класс Adobe ErrorSkin. К сожалению, даже при жестком кодировании цвета в коже, я все еще могу видеть один пиксель красного цвета, проникающего через углы границы. Я постараюсь обновить это, если я это исправлю. Спасибо всем.

<s:TextInput id="txt"
            width="200"
            focusSkin="skins.NewErrorSkin"
            horizontalCenter="0"
            verticalCenter="0"
            errorSkin="skins.NewErrorSkin" />

UPDATE

Звучит глупо, и это довольно просто, но просто установить стиль errorColor в функции errorSkin processBitmap (). Здесь я жестко кодирую границу ошибки как 0x99CC66

override protected function processBitmap():void
{
     // Apply the glow filter
     rect.x = rect.y = 0;
     rect.width = bitmap.bitmapData.width;
     rect.height = bitmap.bitmapData.height;

     target.setStyle("errorColor", 0x99cc66);
     glowFilter.color = 0x99cc66;

     bitmap.bitmapData.applyFilter(bitmap.bitmapData, rect, filterPt, glowFilter);
}
1 голос
/ 15 марта 2011

Вы пытались создать обложку на основе ErrorSkin (не обложки TextInput), которая находится в \ Flex 4.1 \ frameworks \ projects \ spark \ src \ spark \ skins \ spark \ ErrorSkin.as?

...