「エラー」状態を定義するカスタムTextInputコンポーネントを作成しています。errorStringプロパティの長さが0より大きい場合に状態を「エラー」に変更するようにTextInputクラスを拡張しました。スキンクラスでは、「エラー」状態を定義し、サイズと位置を検出するロジックを追加しました。エラーアイコン。ただし、このコードを同時に使用すると、ビットマップイメージタグで「includeIn」プロパティを使用すると、デザインビューエラーが発生します。A)「includeIn」プロパティが設定されていないコードのみを含めるか、B)アイコンのサイズと位置を設定するコードを含めず、「includeIn」プロパティのみを使用する場合は、機能します。「includeIn」の両方を使用したときにデザインビューの問題を引き起こす可能性のあるアイデア
TextInputクラス:
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();
}
}
}
TextInputスキンファイル:
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>