Apache flex 如何理解;id";弹性皮肤的属性?

Apache flex 如何理解;id";弹性皮肤的属性?,apache-flex,flex-spark,skin,Apache Flex,Flex Spark,Skin,我正在阅读flex皮肤的一些源代码,发现有一些id属性,这似乎很重要。以“按钮”皮肤为例: <s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" minWidth="21" minHeight="21" alpha.disabled="0.5"> <!-- host comp

我正在阅读flex皮肤的一些源代码,发现有一些
id
属性,这似乎很重要。以“按钮”皮肤为例:

<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" 
             minWidth="21" minHeight="21"
             alpha.disabled="0.5">

    <!-- host component -->
    <fx:Metadata>
        <![CDATA[ 
        /** 
        * @copy spark.skins.spark.ApplicationSkin#hostComponent
        */
        [HostComponent("spark.components.Button")]
        ]]>
    </fx:Metadata>

    <!-- layer 8: text -->
    <s:Group id="textGroup" verticalCenter="1" left="25">
        <s:filters>
            <s:DropShadowFilter alpha="0.5" blurX="0" blurY="0" distance="1" />
        </s:filters>  
        <s:Label id="labelDisplay" 
                 textAlign="center"
                 verticalAlign="middle"
                 maxDisplayedLines="1">
        </s:Label>
    </s:Group>

</s:SparkSkin>

您可以看到有
textGroup
labelDisplay
的ID。它们很重要,因为如果我使用其他ID,样式将不会应用于按钮

但是我怎么知道我应该使用什么ID呢?为什么是
textGroup
labelDisplay
?我在哪里可以找到声明

我试图在spark.components.Button.as的源代码中搜索它们,但没有找到任何相关内容。

检查 第节蒙皮合同

id用于绑定皮肤中的皮肤部件实例和主机组件中的逻辑。

检查 第节蒙皮合同


id用于绑定skin中的skin part实例和host component中的逻辑。

IDs textGroup和labelDisplay是蒙皮契约的一部分。 如果您在Button类扩展的类的基础上检查Button的源代码,您将注意到:

[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:TextBase;
如您所见,声明告诉您labelDisplay是皮肤中的一个文本库,labelDisplay皮肤部分在技术上是不需要的(required=“false”),但是如果没有它,Flex将不会在按钮控件上绘制标签。所需属性的默认值为false。Button类与其外观之间的约定规定,在设置按钮的label属性时,如果labelDisplay外观部分存在,则该值将向下压入外观并修改labelDisplay外观部分文本的值


所以本质上这意味着这些ID将在ButtonBase类中使用。通常不需要更改ID,除非您的需求需要您这样做。在这种情况下,还需要适当地更改蒙皮约定

IDs textGroup和labelDisplay是蒙皮合约的一部分。 如果您在Button类扩展的类的基础上检查Button的源代码,您将注意到:

[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:TextBase;
如您所见,声明告诉您labelDisplay是皮肤中的一个文本库,labelDisplay皮肤部分在技术上是不需要的(required=“false”),但是如果没有它,Flex将不会在按钮控件上绘制标签。所需属性的默认值为false。Button类与其外观之间的约定规定,在设置按钮的label属性时,如果labelDisplay外观部分存在,则该值将向下压入外观并修改labelDisplay外观部分文本的值

所以本质上这意味着这些ID将在ButtonBase类中使用。通常不需要更改ID,除非您的需求需要您这样做。在这种情况下,还需要适当地更改蒙皮约定