我正在将我的css文件编译为swf文件并在运行时加载它们。在大多数情况下编译这些并使用ClassReference语句我没有问题:
.miniCashLadderGridStyle
{
color : #2a2a2a;
backgroundAlpha : 0;
borderSkin : ClassReference("mx.skins.ProgrammaticSkin");
headerSortSeparatorSkin : ClassReference("mx.skins.ProgrammaticSkin");
horizontalSeparatorSkin : ClassReference("company.assets.GridHorzDivLine");
verticalSeparatorSkin : ClassReference("company.assets.GridVertDivLine");
}
工作正常。资产来自一个单独的swc,但是这个:
header-background-skin : ClassReference("company.view.grid.skin.HeaderBackground");
不起作用。不同之处在于HeaderBackground是与css文件在同一项目中的一个类。如果我将样式移动到我的mxml文件中,那确实很好。
我想知道编译器在编译css fiels时是否使用不同的源路径。
这是在FlashBuilder 4 build 269271 SDK 13963
中答案 0 :(得分:2)
因为如果不在其他地方使用它,所引用的外观类尚未编译到应用程序中,因此在应用样式SWF时将发生运行时类未找到错误。通过避免此错误,您可以强制将皮肤类编译到应用程序中。例如:
<s:Application>
import company.view.grid.skin.HeaderBackground;
private var referrenceEnforcer:Array = [HeaderBackground];
</s:Application>
答案 1 :(得分:1)
问题在于,当您在Flex / Flash构建器中将css编译为swf时,它会在没有项目构建路径的情况下运行mxmlc,因此编译器无法看到源代码。 The old bug filed 2 years ago
解决方法是将所需的包放在css所在的同一文件夹中(即使符号链接就足够了)。编译器会看到文件&amp;适当地将它们编译成类。
答案 2 :(得分:0)
这可能有所帮助:
Flex支持外部CSS样式表。要将样式表应用于当前文档及其子文档,请使用标记的source属性。外部样式表文件应位于包含MXML源文件的文件夹中。默认情况下,这是MXML项目中的src文件夹。
注意:您应该尝试限制应用程序中使用的样式表数量,并仅在应用程序中的顶级文档(包含该标记的文档)中设置样式表。如果在子文档中设置样式表,则可能会出现意外结果。
以下示例在名为external.css的外部CSS文件中定义了两个CSS类选择器。通过在标记的source属性中指定其路径和文件名,可以在Flex应用程序中使用外部CSS文件。 例: 外部CSS文件
/* An external CSS file */
.solidBorder
{
borderStyle: "solid";
}
.solidBorderPaddedVertically
{
borderStyle: "solid";
paddingTop: 12px;
paddingBottom: 12px;
}
MXML文件
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
width="150" height="140"
viewSourceURL="src/StylesExternal/index.html"
>
<mx:Style source="styles/external.css" />
<mx:VBox styleName="solidBorder">
<mx:Button label="Submit"/>
</mx:VBox>
<mx:VBox styleName="solidBorderPaddedVertically">
<mx:Button label="Submit"/>
</mx:VBox>
</mx:Application>
答案 3 :(得分:0)
编译CSS时,在编译器的library-path参数中提供模块的swf,他会看到该类。
答案 4 :(得分:0)
尝试右键单击FlashBuilder 4的Package Explorer中的CSS,然后将编译CSS转换为SWF。这似乎解决了我。
答案 5 :(得分:0)