2009-07-01 4 views
1

私はblue.cssを使用しても.I私は2つの異なるCSSファイルをFlexアプリケーションにどのように動的にロードしますか?

に[Bindable] プライベートするvar pickcss stroedように、ユーザーのテーマコンボボックスを動的にテーマを変更したフレックスにbeige.css:配列= [ "blue.css"、「ベージュ.css "];

プライベート関数css_initializeHandler(イベント:イベント):無効

{ 
     pickcssComboBox.selectedIndex = pickcss.indexOf(0); 
    } 

プライベート関数css_changeHandler(イベント:イベント):無効 {

//ここでは、どのように私は
styleid = [pickcssComboBoxを適用します.selectedItem]; }

"MX:ラベルテキスト=" テーマ "/>

"MX:コンボボックスのID =" pickcssComboBox" のdataProvider = "{pickcss}" 初期= "css_initializeHandler(イベント)" 変化=」 css_changeHandler(イベント)「幅= 『uが知っていれば110』 />」

私はIDを持っていないスタイルで使用

ので、私が行うことができますか?plzは

答えて

3

はまず、動的にスタイルシートをロードするためにコンパイルする必要があります説明それらを別々の.swfファイルに変換します。これは、mxmlc(またはFlex Builderのcss fil 「CSSをSWFにコンパイルする」を選択)。 はその後、スタイルSWFをロードするために、あなたはスタイルを切り替えたいときに、あなたはまた、以前のスタイルをアンロードしたいと思うにStyleManager

StyleManager.loadStyleDeclarations("blue.swf"); 

を使用しています。

StyleManager.unloadStyleDeclarations(styleid) 
styleid = pickcssComboBox.selectedItem; 
StyleManager.loadStyleDeclarations(styleid); 

は詳細についてはLoading style sheets at run timeを参照してください:だから、あなたはあなたのコンボボックスでCSSファイルの名前を入れたと仮定すると、あなたのcss_changeHandlerにあなたはこのような何かをやります。

+0

非常に非常に便利です。ありがとうWouter Coekaerts。私はスタイルIDを設定します.iは、青いテーマやベージュのテーマのように適切に表示されるようなコンボボックスにCSSファイルの名前を入れます。どのように切り替えるか –