2011-04-13 107 views
4

我想通过CSS定义我的Flex 4皮肤,但我的自定义皮肤不会显示。下面是我在做什么:用CSS定义Flex 4皮肤

在我的应用程序导入我的CSS和我的按钮定义的styleName:

 <fx:Style source="styles.css"/> 
     <s:Button label="Button" styleName="circle"/> 

这里是我的CSS:

@namespace s "library://ns.adobe.com/flex/spark"; 
@namespace mx "library://ns.adobe.com/flex/mx"; 

s|Button.circle 
{ 
    skinClass: ClassReference("skins.buttons.CircleButton"); 
} 

我的理解是,我的按钮应该通过CSS提供它的skinClass,但它无法工作。如果我直接定义皮肤类如下图,它工作正常:

<s:Button label="Button" skinClass="skins.buttons.CircleButton"/> 

任何帮助,将不胜感激。

+1

你是否在主应用程序文件中声明了Style标签? – Constantiner 2011-04-13 21:10:02

+0

我在视图中定义它,我只是将它移到主应用程序文件中,现在它可以很好地处理类型选择器。谢谢! – redHouse71 2011-04-13 21:47:19

回答

0

请确保您有根应用程序文件在你的CSS文件中的第一。其次,我会尝试在没有类型选择器的情况下执行css,因此不要使用s|Button.circle,只需要执行.circle

编辑

您也可以尝试把风格样式标签相同的容器内,你的按钮,看看是否能工程。你确定你的应用程序可以找到你的style.css吗?显示更多代码可能有助于这种情况。

+0

谢谢!我按照你的建议删除了类型选择器,它工作。我正在关注使用它的Adobe电视教程(http://tv.adobe.com/watch/adc-presents/migrating-to-flex-4-using-skins/),所以我猜想它会起作用,我将如何确保所有按钮都使用了一个皮肤? – redHouse71 2011-04-13 21:38:06

+0

您可以使用类型选择器,然后使用s | Button {...}'。 – 2011-04-13 21:40:29

0

official Flex CSS documentation

类选择:满足一类 条件A CSS类选择 匹配组件。声明 类选择器的CSS语法是在 条件的前面添加一个点。您可以通过 将类别选择器声明为类型选择器的 条件,或者将 声明为符合 类别条件的任何类型。

.header { background-color: #CCCCCC; } 

HBox.footer { background-color: #999999; } 

注:在Flex一类条件使用上的 部件styleName来属性满足 。例如,您可能有两类HBox:“标题”和 “页脚”。以上,第一个选择器 适用于任何具有 styleName =“header”的组件;第二 选择应只适用于HBox中 部件用的styleName =“页脚” (的东西,实际上需要在 固定和浓汤执行,如 最新类选择仅获 普及和任何类型的选择 被忽略)。

它看起来像选择可能不会在浓汤工作...

+0

自从去年发布以来,它不再被称为'Gumbo',你的例子是Flex 3。 – 2011-04-13 21:30:38

+0

你能选择类选择器吗?我以前没有和他们一起工作过。Gumbo仍然是Flex 4/4.1的代号。英雄是4.5的代号。这些名字在发布后不会消失。 – 2011-04-13 21:33:39

+0

代号是用于尚未确定名称或版本的产品。你听不到任何人使用代号为Longhorn的Windows 7来呼叫Windows?现在是Flex 4。 Flex 4.5代号为Hero,因为尚未最终确定。 – 2011-04-13 21:38:59