代码之家  ›  专栏  ›  技术社区  ›  Roaders

找不到定义将CSS文件中的类引用编译为Swf文件时出错

  •  4
  • Roaders  · 技术社区  · 16 年前

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

    6 回复  |  直到 16 年前
        1
  •  2
  •   Leo    14 年前

    因为您引用的皮肤类尚未编译到应用程序中,如果您没有在其他位置使用它,那么在应用样式SWF时将发生运行时类未找到错误。通过避免此错误,可以强制将皮肤类编译到应用程序中。例如:

    <s:Application>
        import company.view.grid.skin.HeaderBackground;
        private var referrenceEnforcer:Array = [HeaderBackground];
    </s:Application>
    
        2
  •  1
  •   user269328    16 年前

    问题是,在Flex/Flash builder中将css编译为swf时,它运行mxmlc而没有项目的构建路径,因此编译器看不到源代码。 The old bug filed 2 years ago

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

        3
  •  0
  •   Todd Moses    16 年前

    这可能有助于:

    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>
    
        4
  •  0
  •   nhu    16 年前

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

        5
  •  0
  •   JGFMK    15 年前

    尝试右键单击FlashBuilder4的包资源管理器中的CSS,然后将CSS编译到SWF。这似乎为我解决了问题。

    推荐文章