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フィールドなどをコンパイルするときにコンパイラが異なるソースパスを使用するのではないかと思います。

これはFlashBuilder4ビルド269271SDK13963にあります

4

6 に答える 6

2

参照したスキンクラスは、他の場所で使用しない場合はアプリケーションにコンパイルされていないため、スタイルSWFを適用すると、ランタイムクラスが見つかりませんというエラーが発生します。このエラーを回避することで、スキンクラスをアプリケーションにコンパイルするように強制できます。例えば:

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

問題は、Flex/Flash ビルダーで css を swf にコンパイルすると、プロジェクトのビルド パスなしで mxmlc が実行されるため、ソースがコンパイラーに表示されないことです。2年前に提出された古いバグ

回避策は、必要なパッケージを css と同じフォルダーに配置することです (シンボリック リンクでも十分です)。コンパイラはファイルを見て、適切にクラスにコンパイルします。

于 2010-04-22T09:38:07.190 に答える
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 スタイルシートをサポートしています。現在のドキュメントとその子ドキュメントにスタイル シートを適用するには、タグの source プロパティを使用します。外部スタイル シート ファイルは、MXML ソース ファイルを含むフォルダーにある必要があります。デフォルトでは、これは MXML プロジェクトの src フォルダーです。

注: アプリケーションで使用するスタイル シートの数を制限し、スタイル シートをアプリケーションの最上位のドキュメント ( タグを含むドキュメント) にのみ設定するようにしてください。子ドキュメントにスタイル シートを設定すると、予期しない結果が生じる可能性があります。

次の例では、external.css という外部 CSS ファイルで 2 つの 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>
于 2010-02-17T16:25:59.183 に答える
0

Try just right clicking the CSS in the Package Explorer of FlashBuilder 4, then take compile CSS to SWF. That seemed to fix it for me.

于 2010-11-12T20:24:16.190 に答える
0

CSS をコンパイルするときに、モジュールの swf をコンパイラの library-path パラメータに指定すると、クラスが表示されます。

于 2010-08-06T10:10:13.997 に答える