14

複数のモジュールを含むやや大規模な Flex プロジェクト (複数の SWF を生成する単一の Flex プロジェクト) を構築しています。

現在、メインの SWF タグにロードされている単一の css ファイルがあります。

<s:Application ... >
    <fx:Style source="css/main.css" />
...
</s:Application>

CSS ファイル内:

/* CSS file */
@namespace s "library://ns.adobe.com/flex/spark";

s|Panel { 
    skinClass: ClassReference("com.skins.DefaultPanelSkin"); 
} 

s|Button {
    skinClass: ClassReference("com.skins.DefaultButtonSkin");
}

CSS ファイルは他のどこからも参照されていません。

現在、6 つのモジュールがあります (メインの SWF を加えて、合計 7 つの SWF があります)。警告の数がモジュールの数に相関していることに気付きました...モジュールを追加するたびに、より多くの警告が表示されます。現在、CSS ファイルのすべてのエントリに対して 6 つの警告が表示されるため、次のようになります。

CSS type selectors are not supported in components: 'Panel'
CSS type selectors are not supported in components: 'Panel'
CSS type selectors are not supported in components: 'Panel'
CSS type selectors are not supported in components: 'Panel'
CSS type selectors are not supported in components: 'Panel'
CSS type selectors are not supported in components: 'Panel'

そして、Button、TextArea などについて繰り返します。役に立たない警告が多すぎて、有効なものがあるかどうかを確認することは不可能です。

この警告は、私が間違っていることが原因ですか? スタイルはすべて正しく適用されており、実行時に思いどおりに動作しているように見えます。何も悪いことをしていない場合、コンパイラにこの警告を無視するように指示できますか?

注: コンパイラ フラグを試してみましたが、-show-unused-type-selector-warnings=false機能しません...これは、類似しているが異なる警告のためです。

4

7 に答える 7

6

FlexBuilder で警告を見ている場合は、Eclipse の問題フィルタリング GUI を使用できるはずです。この点で Flex 4 が Flex 3 と十分に似ていると仮定すると、右上の問題タグに、「このビューに適用されるフィルターを構成する」というツールチップのボタンがあります。矢印のある方です。

フィルタ ダイアログのデフォルト フィルタで、説明を「含まない」に設定し、その下のテキストを「CSS タイプ セレクタはコンポーネントでサポートされていません」に設定します。

于 2009-11-13T13:02:21.330 に答える
2

そのため、ソースをコンパイラにダウンロードし、それを検索して警告を見つけ、コメントアウトして、コンパイラを再コンパイルすることになりました。これは、gumbobeta2のタグが付けられたバージョンに反します。

Index: modules/compiler/src/java/flex2/compiler/css/StylesContainer.java
===================================================================
--- modules/compiler/src/java/flex2/compiler/css/StylesContainer.java   (revision 10941)
+++ modules/compiler/src/java/flex2/compiler/css/StylesContainer.java   (working copy)
@@ -198,11 +198,11 @@
         {
             // [preilly] This restriction should be removed once the
             // app model supports encapsulation of CSS styles.
-            ComponentTypeSelectorsNotSupported componentTypeSelectorsNotSupported =
+            /*ComponentTypeSelectorsNotSupported componentTypeSelectorsNotSupported =
                 new ComponentTypeSelectorsNotSupported(getSource().getName(),
                                                        lineNumber,
                                                        selector);
-            ThreadLocalToolkit.log(componentTypeSelectorsNotSupported);
+            ThreadLocalToolkit.log(componentTypeSelectorsNotSupported);*/
             return true;
         }

最も洗練された解決策ではありません...しかし、それらの警告は本当に迷惑になりました。

于 2009-10-10T00:31:02.577 に答える
2

この警告について私が見つけたもう 1 つの原因は、クラス内から parentApplication を参照する場合です。

私のプロジェクトには 2 つのアプリがあり、何らかの理由でいずれかのアプリケーションにアクセスする必要がある場合がいくつかあります。

次のようにparentApplicationを参照すると、警告が表示されます。

(this.parentApplication as SomeAppName).someFunction();

リファレンスを一般のままにしておくと、エラーはなくなります。

this.parentApplication.someFunction();

これは、これが良い習慣であるかどうかについてコメントすることを意図したものではありませんが、一部の人々が根本的な原因を見つけるのに役立つことを願っています.

h番目

于 2011-01-13T21:49:42.917 に答える
1

問題は、ロードされたモジュールでグローバル スタイルを定義できないことです。Module タグに特定のスタイル名を使用し、CSS で子孫を使用して、スタイルをサブ コンポーネントに適用できます。

<mx:Module styleName='mySubStyle' .../>

そしてcssで次を使用します:

.mySubStyle s|Panel { color: #FF0000; }
于 2009-09-30T21:42:24.007 に答える
0

これをプロジェクト プロパティのコンパイラ フラグに追加します。

-show-unused-type-selector-warnings=false
于 2013-08-22T12:01:17.307 に答える
0

CSS の名前空間を指定する必要があるようです: ドキュメントから: 「名前空間で修飾されていないか、アプリケーションにリンクされた ActionScript クラスに解決されない型セレクターは、コンパイル時に警告を発します。」

彼らが与える例は次のとおりです。

<Style>
    @namespace "library://ns.adobe.com/flex/spark";
    @namespace cx "com.mycompany.*";

    Button { color: #990000; }
    cx|MyFancyButton { color: #000099; }
</Style>

あなたの例から、カスタム名前空間が欠落しているようです。また、アーキテクチャがモジュール式であるため、コンパイル時にクラスがアプリケーションに解決されません。

于 2009-10-07T05:49:11.937 に答える