6

StyleManager を使用して、Flex でオブジェクトのスタイルを設定するために CSS を適用できることを私は知っています:
http://livedocs.adobe.com/flex/3/html/help.html?content=styles_07.html

コンパイルされたCSS ファイル (SWF) を動的にロードすることもできます:
http://livedocs.adobe.com/flex/3/html/help.html?content=styles_10.html

ただし、Web GUI とサーバー側スクリプトを使用して CSS ファイルを動的に作成しています。CSS が変更された場合、スクリプトは CSS を SWF にコンパイルする必要もあります (これは実行可能なオプションではありません)。これを回避する方法はありますか?

4

4 に答える 4

3

Adobe バグ トラッカーT. Busserのこれに関連する問題へのこのコメントでは、実行可能な解決策について説明しています。

「HTTPService オブジェクトで読み取った CSS ファイルを「解析」する小さなクラスを作成しました。このクラスは、HTTPService オブジェクトによって返される文字列を分解し、それをセレクターに分解し、セレクターごとに新しい CSSStyleDeclaration オブジェクトを作成します。すべてのプロパティが CSSStyleDeclaration オブジェクトに割り当てられると、それは StyleManager に追加されます. チェックは実行されません. CSS ファイルが適切に形成されていることを確認する必要がありますが、99% の確率で十分です.私の顧客は、@font、Embed()、ClassReference() などをほとんど使用しません。Flex アプリケーションを自分の家のスタイルに合わせて簡単にテーマ化できるように、色などを変更する機能が必要です。」

この人に解決策を問い合わせてみるか、この as3csslib プロジェクトのコードをベースとして、彼らが説明しているようなものを書くこともできます。

于 2008-10-15T15:19:47.953 に答える
2

このようにフレックスで動的スタイルシートを実装することもできます。ここで私はこの記事を見つけました: http://askmeflash.com/article_m.php?p=article&id=6

于 2009-04-01T09:38:50.583 に答える
2

編集:この解決策は機能しません。パーサーから取り出されたすべてのセレクターは小文字に変換されます。これはあなたのアプリケーションではうまくいくかもしれませんが、おそらくうまくいかないでしょう...

この回答は、解決策を探している人に役立ち、他の人にこの方法の制限を警告する可能性があるため、ここに残しておきます。


完全な議論については、私の質問「AS3 で書かれた CSS パーサーを探しています 」を参照してください。ただし、標準ライブラリ内に隠された CSS パーサーを見つけました。使用方法は次のとおりです。

public function extractFromStyleSheet(css:String):void {

    // Create a StyleSheet Object
    var styleSheet:StyleSheet = new StyleSheet();
    styleSheet.parseCSS(css);

    // Iterate through the selector objects
    var selectorNames:Array = styleSheet.styleNames;
    for(var i:int=0; i<selectorNames.length; i++){

        // Do something with each selector
        trace("Selector: "+selelectorNames[i];

        var properties:Object = styleSheet.getStyle(selectorNames[i]);
        for (var property:String in properties){

            // Do something with each property in the selector
            trace("\t"+property+" -> "+properties[property]+"\n");
        }
    }
}

次に、次を使用してスタイルを適用できます。

cssStyle = new CSSStyleDeclaration();
cssStyle.setStyle("color", "<valid color>);
FlexGlobals.topLevelApplication.styleManager.setStyleDeclaration("Button", cssStyle, true);
于 2011-09-23T20:42:54.290 に答える
0

Flex での CSS の適用は、実行時にクライアント側ではなく、コンパイル時にサーバー側で処理されます。

その場合、2つのオプションが表示されます(どちらがどれほど実用的かはわかりません):

  1. サーバー側スクリプトを使用して CSS を SWF としてコンパイルし、動的にロードします。
  2. CSS スタイル シートを解析し、flex で setStyle 関数を使用してスタイルを適用します。このアプローチに似た例は、ソースをチェックアウトできるFlex Style Explorerです。

幸運を。

于 2008-10-15T14:48:12.977 に答える