2011-03-14 7 views
1

나는 미친 알약을 복용하고 있을지 모르지만 실제적으로 오류 스키닝을받은 사람이 있습니까? 나는 미친 짓을하지 않고 TextInput (spark)을 확장하고 errorSkin 속성을 설정합니다.errorSkin Spark TextInput 유효성 확인

나는 SparkSkin을 사용하여 스킨을 만들려고했지만 아무 것도하지 않았습니다. ProgrammaticSkin을 사용하여 스킨을 만들려고했지만 아무것도하지 않았습니다.

텍스트 입력은 항상 빨간색 테두리입니다. 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

답변

1

글쎄, 그것은 예쁘지 않지만 변경해야하는 두 개의 스킨이있는 것처럼 보입니다. ErrorSkin 및 FocusSkin. 좋은 소식은 당신이 그들을 똑같이 만들 수 있다는 것입니다. 스킨의 경우 테스트하기 위해 Adobe의 ErrorSkin 클래스를 전체적으로 복사했습니다. 안타깝게도 피부색을 하드 코딩한다고해도 경계선 모퉁이에서 빨간색의 한 픽셀을 볼 수 있습니다. 내가 고칠 경우 이것을 업데이트하려고 노력할 것이다. 모두에게 감사드립니다.

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

UPDATE

는 바보 같은 소리와는 prolly하지만 단지 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); 
} 
1

\ Flex 4.1 \ frameworks \ projects \ spark \ src \ spark \ skins \ spark \ ErrorSkin.as에있는 ErrorSkin (TextInput 스킨이 아님)을 기반으로 스킨을 만들려고 했습니까?

+0

Uhhhgggg, 내 잘못들. 기본적으로, 스케일되지 않은 너비와 높이는 어떤 이유로 0입니다. 최소한 그래픽의 높이와 너비를 하드 코딩하십시오. 그래도 여전히 제대로 작동하지 않습니다. 그래픽이 컨트롤 위에 그려진 것 같습니다. 빨간색 테두리가 여전히 아래에 표시됩니다. –