0

开发人员如何只为 Flex 组件的一个部分设置皮肤,而不必重新编写该组件的整个渲染?

ESRI 的 ArcGIS Flex Viewer (3.0) 有一个 WidgetTemplate 容器,我想只对其中的一个部分进行蒙皮,而不必负责整个容器的渲染。例如,我只想对这个容器的皮肤部分进行皮肤处理:

[SkinPart(required="false")]
public var header:Group;

这样我就可以将标题嵌入标签的颜色设置为我想要的任何颜色。

因此,我创建了以下名为PrintWidgetSkin.mxml的皮肤:

<?xml version="1.0" encoding="utf-8"?>
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx">
   <!-- host component -->
   <fx:Metadata>
       [HostComponent("com.esri.viewer.WidgetTemplate")]
   </fx:Metadata>

   <!-- states -->
   <s:states>
       <s:State name="open" />
       <s:State name="minimized" />
       <s:State name="closed" />
       <s:State name="disabled" />
       <s:State name="normal" />
   </s:states>


   <s:Group id="header">
       <s:Label color="0x000000" />
   </s:Group>
</s:Skin>

并将WidgetTemplate 实例的skinClass属性分配给这个皮肤:

<viewer:WidgetTemplate id="wTemplate"
                       width="345" height="285"
                       minWidth="345"
                       minHeight="285"
                       styleName="fontstyle"
                       accentColor="0x33FF66"
                       color="0x33FF66"
                       skinClass="widgets.Print.PrintWidgetSkin">
</viewer:WidgetTemplate>

然而,当这个 skinClass 被分配给它时,容器根本不显示。

为了澄清,是否可以只对一个皮肤部分进行蒙皮,而将其他皮肤部分和容器的其余部分渲染为正常?

我的主要来源是 Adob​​e 的皮肤页面:关于 Spark Skins

4

1 回答 1

1

它不会显示,因为 com.esri.viewer.WidgetTemplate.as 的多个皮肤部分未在您创建的皮肤中考虑。

如果您只想更改单个小部件中标题的标签颜色,我建议更改打印小部件的 creationComplete 处理程序中的颜色,而不是创建全新的皮肤。

此外,查看com.esri.viewer.skins.WidgetTemplateSkin.mxml以获得更多想法和/或修改全局小部件样式。

于 2012-11-13T05:22:14.533 回答