2011-12-19 18 views
1

のボタンをクリックして、私たちは、ボタンのクリックに基づいてアプリケーションのテーマであるアプリケーションのスタイルを変更しているアプリケーションを作成する必要があります。の選択cssファイルを動的FLEX 3

すべてが異なるCSSファイルを含むテーマをダウンロードしました。私はそのテーマを適用するためにアプリケーションのCSSを動的に宣言する必要があります。

enter image description here

私は、ファイル名Theme1.css、Theme2.css、Theme3.css、Theme4.css、Theme5.cssを持っています。

私はテーマ1]ボタンをクリックしたときに、私は、スタイルのソースとしてTheme1.cssファイルを適用する必要があります。テーマ2のボタンをクリックすると同様に、スタイルのソースとしてTheme2.cssファイルを適用する必要があります。

注:CSSファイルは、アプリケーションの両方のアプリケーションとコンポーネントのスタイルが含まれています。

は....ニースDAY

答えて

1

あなたはスタイルは、実行時に変更することができるように、SWFにCSSをコンパイルするために日食/ Flex Builderの内の施設を使用する必要があります。

また、現在のテーマのIDのインスタンス変数を維持しなければなりません。

これはあなたが探しているものですか?

public function switchTheme(theme:int):void { 
    StyleManager.unloadStyleDeclarations("assets/styles/Theme"+currentTheme+".swf"); 
    StyleManager.loadStyleDeclarations("assets/styles/Theme"+theme+".swf"); 
    this.currentTheme = theme; 
} 

各ボタンのクリックハンドラをswitchTheme関数に割り当て、テーマIDをパラメータとして渡します。

+0

こんにちは、ロイ、 お返事ありがとうございます。 しかし、まだ問題に直面しています。私がunloadStyleDeclarationメソッドを呼び出すと、例外が発生します。つまり、要するに、それは機能していません。 –

+0

@SagarRawal、私に例外を知らせるなら、多分私は助けることができます。 –

+0

エラーが発生しました: "TypeError:Error#1009:nullオブジェクト参照のプロパティまたはメソッドにアクセスできません。" StyleManagerImpl.asの900行でFLEX SDK 3.4を使用しています.... –

1

を持っている私は、あなたがループにすべてのコントロール1つずつコントロールにテーマを設定しなければならないと思います。例: デフォルトのテーマREDを設定し、ボタンが赤の場合はテーマを青に変更し、コントロールのループを使用してボタンの色を青に設定します。 はあなたが私は...

感謝を言って何を得ていないなら、私に尋ねる

ください....あなたにこの助けとなる可能性があります。

+0

こんにちはManojさん、 私がテーマを変更する必要があることのようではありませんユーザーがボタンをクリックしたとき最初に問題を理解してから答えます。 –

+0

こんにちはSagar Rawal、 私の解決策もあなたに役立ちます。 すべてのコントロールをループして、問題がある場合は私に尋ねてください。 –

+0

それはまた私に役立ちます...良い解決法Manoj Savalia –

1

CSSファイルをSWFとしてコンパイルする必要があります。 Flash BuilderのエクスプローラウィンドウでCSSファイルを右クリックし、メニューから[CSSをSWFにコンパイルする]を選択できます。

次に、あなたのCSS情報を持つSWFファイルをロードするためにStyleManagerからloadStyleDeclarations()メソッドを使用します。

前の手順では、新しいスタイルをスタイルサブシステムに追加するだけです。古いスタイルを消去する場合は、まずunloadStyleDeclarations()メソッドが必要です。

falseを2番目のパラメータとして使用すると、StyleManagerはスタイルを無効にせず、ステージ上のコンポーネントのスタイル宣言チェーン/キャッシュを再構築します。これは遅くなるだけでなく、新しいスタイルを適用する前に既定のスタイルで画面を更新することにもなります。

あなたは、これに似た何かを持っている、とあなたがテーマを変更したい時はいつでも、適切なURLでapplyTheme('url/to/theme.swf')を呼び出すことができます。

private var currentThemeURL:String = 'themes/default.swf'; 

public function applyTheme(themeURL:String):void 
{ 
    StyleManager.unloadStyleDeclarations(currentThemeURL, false); 

    StyleManager.loadStyleDeclarations(themeURL); 
    currentTheme = themeURL; 
} 
+0

答えはありますが、まだ動作していません..申し訳ありません。 –

関連する問題