2014-06-17 4 views
4

하나는 레이블과 아이콘을 정의 할 수 있습니다기본 스파크 버튼 스킨에 iconDisplay 태그가없는 이유는 무엇입니까? 플렉스 4.6 버튼

<s:Button icon="{@Embed('assets/icon.png'}" label="Do the dance" /> 

corrsesponding 피부 부분은 다음과 같습니다 iconDisplay:BitmapImage 및 구성 요소 (adobe ref)에 의해 설정된다 labelDisplay:IDisplayText. 그들은 ButtonBase.as에 정의

는 ButtonBase확장 spark.components.Button

//-------------------------------------------------------------------------- 
// 
// Skin parts 
// 
//-------------------------------------------------------------------------- 

[SkinPart(required="false")] 

/** 
* A skin part that defines an optional icon for the button. 
* 
* @langversion 3.0 
* @playerversion Flash 10.1 
* @playerversion AIR 2.0 
* @productversion Flex 4.5 
*/ 
public var iconDisplay:BitmapImage; 

[SkinPart(required="false")] 

/** 
* A skin part that defines the label of the button. 
* 
* @langversion 3.0 
* @playerversion Flash 10 
* @playerversion AIR 1.5 
* @productversion Flex 4 
*/ 
public var labelDisplay:IDisplayText; 

을 spark.components.supportClasses.ButtonBase하고 새로운 스타일을 추가하고 속성을 _emphasized하지만하지 않는있다 iconDisplay에 대해 언급하십시오. 그래서 실제로 버튼을 그리는 데 사용되는 유일한 클래스는 스킨 클래스입니다.

<!-- layer 8: text --> <!--- @copy spark.components.supportClasses.ButtonBase#labelDisplay --> <s:Label id="labelDisplay" textAlign="center" maxDisplayedLines="1" horizontalCenter="0" verticalCenter="1" verticalAlign="middle" left="10" right="10" top="2" bottom="2"> </s:Label> 

레이블을 표시 할 수 있도록,하지만 피부 : 우리는 플렉스에서 사용하는 기본 스킨입니다 (? 또는 인) spark.skins.spark.ButtonSkin에 가면, 우리는 발견 할 것이다 <s:BitmapImage id="iconDisplay">이 없으므로 표시 할 컨테이너가 없을 때 아이콘이 어떻게 표시되는지 이해할 수 없습니까?

답변

9

ButtonSkinSparkButtonSkin으로 확장되었으므로 iconGroup에 iconDisplay가 있고 constructIconParts()와 함께 표시되기 때문입니다. 클래스를 확장하기위한 mxml 구문 때문에 (ButtonSkin.mxml의 루트 노드로 <s:SparkButtonSkin> 사용) 매우 명확하지 않습니다. http://hulstkamp.com/articles/flex-advanced-fxg-spark-icon-buttons/

:

또한 버튼에 확장 FXG 아이콘을 표시하는 좋은 피부있다