我可能正在服用疯狂的药片,但有没有人真正得到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();
}
}
答案 0 :(得分:1)
您是否尝试根据\ Flex 4.1 \ frameworks \ projects \ spark \ src \ spark \ skins \ spark \ ErrorSkin.as中找到的ErrorSkin(而不是TextInput外观)创建外观?
答案 1 :(得分:1)
嗯,它不漂亮,但看起来有两个皮肤需要改变。 ErrorSkin和FocusSkin。好消息是你可以让它们变得一样。对于皮肤,只是为了测试,我完全复制了Adobe的ErrorSkin类。可悲的是,即使将颜色硬编码到皮肤中,我仍然可以看到一个红色的像素在边界的角落中穿过。如果我修复它,我会尝试更新它。谢谢大家。
<s:TextInput id="txt"
width="200"
focusSkin="skins.NewErrorSkin"
horizontalCenter="0"
verticalCenter="0"
errorSkin="skins.NewErrorSkin" />
更新
听起来很愚蠢,但只是在ErrorSkin的processBitmap()函数中设置了errorColor样式。在这里,我将错误边界硬编码为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);
}