我正在创建一个自定义 TextInput 组件,它将定义一个“错误”状态。如果 errorString 属性的长度大于 0,我扩展了 TextInput 类以将状态更改为“错误”。在皮肤类中,我定义了一个“错误”状态,并添加了一些逻辑来检测错误图标。但是,如果我在使用位图图像标记中的“includeIn”属性的同时拥有此代码,则会收到设计视图错误。如果我要么 A) 只包含没有设置“includeIn”属性的代码,它就可以工作,或者 B) 不包含设置图标大小和位置的代码,只使用“includeIn”属性,它就可以工作。当我同时使用“includeIn”时,任何可能导致设计视图问题的想法
文本输入类:
package classes {
import spark.components.TextInput;
public class TextInput extends spark.components.TextInput {
[SkinState("error")];
public function TextInput() {
super();
}
override public function set errorString( value:String ):void {
super.errorString = value;
invalidateSkinState();
}
override protected function getCurrentSkinState():String {
if (errorString.length>0) {
return "error";
}
return super.getCurrentSkinState();
}
}
}
文本输入皮肤文件:
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
//THIS IS THE CODE THAT SEEMS TO BE CAUSING THE PROBLEM
if(getStyle("iconSize") == "large") {
errorIcon.right = -12;
errorIcon.source = new errorIconLg();
} else {
errorIcon.right = -5;
errorIcon.source = new errorIconSm();
}
super.updateDisplayList(unscaledWidth, unscaledHeight);
}
</fx:Script>
<s:states>
<s:State name="normal"/>
<s:State name="disabled"/>
<s:State name="error"/>
</s:states>
//If I remove the problem code above or if I take out the includeIn
//property here, it works
<s:BitmapImage id="errorIcon" verticalCenter="0" includeIn="error" />
</s:SparkSkin>