2011-03-14 66 views
1

我可能会服用疯狂的药丸,但有人实际上得到了errorSkin功能工作?我没有做任何疯狂的事情,只是扩展TextInput(spark)并设置errorSkin属性。SparkSkinInput验证错误的皮肤

我曾尝试使用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(); 
    } 
} 
+0

如果errorSkin是替换皮肤;你不需要更多的仅仅是一个彩色背景吗?尝试重新创建您的ErrorSkin作为TextInput外观的副本。 – JeffryHouser 2011-03-14 23:07:20

回答

1

嗯,它不漂亮,但它看起来像有两个皮肤必须改变。 ErrorSkin和FocusSkin。好消息是,你可以让他们一样。对于皮肤,为了测试,我完全复制了Adobe的ErrorSkin类。可悲的是,即使将颜色硬编码到皮肤中,我仍然可以看到一个红色的像素点在边界的角落。如果我解决了问题,我会尽力更新。谢谢大家。

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

UPDATE

音哑,它prolly不过是刚刚设置的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

您是否试图创建基于\ Flex 4.1 \ frameworks \ projects \ spark \ src \ spark \ skins \ spark \ ErrorSkin.as中的ErrorSkin(不是TextInput皮肤)的皮肤?

+0

Uhhhgggg,我的错家伙。基本上,由于某种原因,未缩放的宽度和高度为零。硬编码的图形的高度和宽度至少显示。它仍然不能正常工作。图形看起来似乎被控制了。红色边框仍在下方显示。 – 2011-03-15 18:19:09