在Flex 4中向自定义元素添加组件会删除样式。为什么?

时间:2013-02-02 08:49:41

标签: actionscript flex4 components

我有一个自定义组件GlassSkin.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx"
         xmlns:local="*" minHeight="20" minWidth="20">
    <fx:Metadata>
        [HostComponent("spark.components.SkinnableContainer")]
    </fx:Metadata>
    <s:states>
        <s:State name="normal" />
        <s:State name="disabled" />
    </s:states>
    <s:Rect left="0" right="0" top="0" bottom="0">
        <s:alpha>0.3</s:alpha>
        <s:radiusX>3</s:radiusX>
        <s:fill>
            <s:SolidColor>#000000</s:SolidColor>
        </s:fill>
    </s:Rect>
    <s:Group id="contentGroup" width="100%" height="100%" left="5" right="5" top="5" bottom="5"></s:Group>
</s:Group>

在主mxmm中,我使用自定义组件,如:

<local:GlassSkin width="600" height="400" horizontalCenter="0" verticalCenter="0">
Something...
</local:GlassSkin>

它有效,contentGroup接收我添加的每个元素。唯一的问题是没有添加自定义元素中指定的自定义图形元素。没有阴影,没有纯色,没有任何东西。为什么呢?

1 个答案:

答案 0 :(得分:0)

我发现了。 使用自定义组件并将数据传递给它,删除mxml本身的每个格式。我不知道为什么。

而不是这个,我创建了一个简单的SkinnableContainer,并将我的自定义组件用作Skin。 (将该组重命名为SparkSkin)

有了这个,我没有自定义组件,但我有一个Skin,我可以在任何地方使用。

  • 另外,由此产生的瑞士法郎变得更小了。