3

Flex 4.6 ボタンの場合、ラベルとアイコンを定義できます。

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

対応するスキン パーツは次のとおりiconDisplay:BitmapImageです。labelDisplay:IDisplayTextコンポーネント ( adobe ref ) によって設定されます。これらは ButtonBase.as で定義されています。

spark.components.supportClasses.ButtonBase

//--------------------------------------------------------------------------
//
//  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.ButtonButtonBaseを拡張し、いくつかの新しいスタイルと _emphasized プロパティを追加しますが、iconDisplay については何も言及していません。そのため、実際にボタンを描画するために使用される唯一のクラスはスキン クラスのようです。Flex で使用されるデフォルトのスキンであるspark.skins.spark.ButtonSkinに移動すると(またはそうですか?)、次のことがわかります。

<!-- 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>

ラベルを表示できるようにしていますが、スキンには表示されてい<s:BitmapImage id="iconDisplay">ないため、表示するコンテナーがないときにアイコンが表示されるのはなぜですか?

4

1 に答える 1