4

我正在将我的 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 文件或其他东西时是否使用不同的源路径。

这是在 FlashBuilder 4 build 269271 SDK 13963 中

4

6 回答 6

2

因为你引用的皮肤类如果你没有在其他地方使用它还没有编译到应用程序中,所以在应用样式SWF时会出现一个run time class not found错误。通过避免此错误,您可以强制将皮肤类编译到您的应用程序中。例如:

<s:Application>
    import company.view.grid.skin.HeaderBackground;
    private var referrenceEnforcer:Array = [HeaderBackground];
</s:Application>
于 2011-08-28T23:54:28.893 回答
1

问题是当您在 Flex/Flash builder 中将 css 编译为 swf 时,它会在没有项目的构建路径的情况下运行 mxmlc,因此编译器看不到源代码。2年前提交的旧错误

解决方法是将所需的包放在 css 所在的同一文件夹中(即使是符号链接也足够了)。编译器会看到文件并将它们适当地编译为类。

于 2010-04-22T09:38:07.190 回答
0

编译 CSS 时,在编译器的 library-path 参数中提供模块的 swf,他会看到该类。

于 2010-08-06T10:10:13.997 回答
0

这是我对这个问题的解决方案 http://volokh.com.ua/blog/2011/06/14/my-fix-for-classreference-in-nested-css-file-compiled-to-swf-causes-error /

于 2011-06-14T09:22:56.650 回答
0

这可能会有所帮助:

Flex 支持外部 CSS 样式表。要将样式表应用于当前文档及其子文档,请使用标记的源属性。外部样式表文件应位于包含 MXML 源文件的文件夹中。默认情况下,这是 MXML 项目中的 src 文件夹。

注意:您应该尽量限制应用程序中使用的样式表的数量,并且只在应用程序的顶层文档(包含标签的文档)中设置样式表。如果在子文档中设置样式表,可能会出现意外结果。

以下示例在名为 external.css 的外部 CSS 文件中定义了两个 CSS 类选择器。通过在标记的源属性中指定外部 CSS 文件的路径和文件名,您可以在 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>
于 2010-02-17T16:25:59.183 回答
0

尝试在 FlashBuilder 4 的 Package Explorer 中右键单击 CSS,然后将 CSS 编译为 SWF。这似乎为我解决了问题。

于 2010-11-12T20:24:16.190 回答