コンパイル時に互換性を維持する Flex コンパイラおよびフレームワークのバージョンを指定するには、compatibility-version コンパイラオプションを使用します。このオプションは、レイアウト規則、パディングや間隔、スキン、その他のスタイル設定など、一部の動作に影響します。さらに、プロパティファイルの解析規則にも影響します。互換性バージョンを設定しても、バージョン間に存在する差異のすべてに適用されるわけではありません。適用される差異については、SDK 2.0.1 と SDK 3 の相違を参照してください。
現在サポートされている compatibility-version コンパイラオプションの値は、2.0.0 および 2.0.1 です。このオプションの値を明示的に設定しなかった場合、コンパイラはデフォルトで現在の SDK バージョンを設定します。コマンドラインで -version オプションを使用すると、現在の SDK バージョンを特定できます。例えば、次のように入力します。
mxmlc -version
Flex Builder では、Flex コンパイラのプロパティパネルの「追加コンパイラ引数」フィールドに、compatibility-version コンパイラオプションを追加します。次の例は、互換性バージョンを 2.0.1 に設定します。
-compatibility-version=2.0.1
コマンドラインコンパイラの場合、コマンドラインから compatibility-version コンパイラオプションを渡すか、設定ファイルで値を設定します。次の例は、flex-config.xml ファイルで互換性のバージョンを 2.0.1 に設定します。
<compiler>
<mxml>
<compatibility-version>2.0.1</compatibility-version>
<mxml>
<compiler>
compatibility-version オプションを設定する場合、使用する設定ファイルと、選択したバージョンに互換性があることを確認してください。例えば、ロケールとメタデータ要素を flex-config.xml ファイル内に設定する方法は、Flex 2.0.1 と Flex 3 で異なります。相違点の一覧は、SDK 2.0.1 と SDK 3 の相違を参照してください。
実行中の Flex アプリケーションのバージョンに、mx.core.FlexVersion クラスを使用してプログラムからアクセスすることができます。アプリケーションの現在の互換バージョンを取得するには、そのクラスの compatibilityVersionString プロパティを使用します。これにより、互換性バージョンに基づいてアプリケーションのロジックを条件付けすることができます。
互換性バージョンを設定する場合、そのバージョンに適合する適切なテーマファイルを選択する必要があります。Flex 2.0.0 および 2.0.1 については、HaloClassic.swc テーマファイルを使用してください。テーマは frameworks/themes ディレクトリにあります。Flex 3 については、テーマファイルを指定する必要はありません。デフォルトのテーマファイルは、Flex 3 互換用に設計されています。テーマの使用の詳細については、『Adobe Flex 3 開発ガイド』のテーマについてを参照してください。
Flex の各バージョンのデフォルトのスタイルシートは、framework.swc ファイル内にあります。この SWC ファイルには、現在のデフォルトスタイルシート(defaults.css)、Flex 2.0.1 のデフォルトスタイルシート(defaults-2.0.1.css)、および Flex 2 のデフォルトスタイルシート(defaults-2.0.0.css)が含まれます。コンパイル時には、開発者が設定した互換性バージョンに対して適切なスタイルシートが使用されます。例えば、compatibility-version オプションを 2.0.1 に設定した場合は、Flex 2.0.1 のデフォルトスタイルシートが使用されます。
compatibility-version オプションの設定によって生じる SDK 2.0.1 と SDK 3 の相違点の大半は、スタイルプロパティと、サブコンポーネントに適用されるスタイルに関するものです。
サブコンポーネントは、別のコンポーネント内にあるコンポーネントのことで、SDK 2.0.1 では親コンポーネントからスタイルを継承しますが、SDK 3 では継承しません。例えば、DateField コントロールには、DateChooser サブコンポーネントがあります。Flex 2.0.1 では、DateField コントロールの borderColor または cornerRadius などの継承不可のスタイルプロパティを設定した場合、スタイルは DateChooser サブコンポーネントにも適用されます。これにより、サブコンポーネントに予期しないスタイルが設定されてしまいますが、この動作を上書きすることはかなり面倒でした。Flex 3 では、DateField コントロールから DateChooser サブコンポーネントにこれらのスタイルが渡されませんが、渡すように選択することができます。
以下のアプリケーションは、DateField コントローラの SDK 2.0.1 における表示と、SDK 3 における表示の差異を示します。
<?xml version="1.0" encoding="utf-8"?>
<!-- versioning/DateFieldSubComponentStyles.mxml -->
<!-- Compile this sample twice: once with the compatibility-version
compiler option set to 2.0.1 and once without setting it. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:DateField
id="dateField1"
yearNavigationEnabled="true"
borderColor="red"
/>
</mx:Application>
前の例で実行する SWF ファイルは以下のとおりです。
スタイルがサブコンポーネントに渡される(または渡されない)方法の違いを確認するには、このアプリケーションを 2 回コンパイルします。初回にこの例をコンパイルする際には、compatibility-version コンパイラオプションを設定しないでください。2 回目のコンパイルでは、compatibility-version オプションを 2.0.1 に設定します。次に例を示します。
mxmlc -compatibility-version=2.0.1 DateFieldSubComponentStyles.mxml
compatibility-version を設定しないでこのアプリケーションを実行する場合、borderColor スタイルは DateField コントロールに適用されますが、DateChooser カレンダーにはまったく適用されません。このアプリケーションの 2.0.1 バージョンを実行する場合、borderColor スタイルは、DateField コントロールだけでなく、DateChooser カレンダーのボタンとヘッダー行にも適用されます。
フィルタリストにスタイルプロパティを追加することで、コントロールからサブコンポーネントに渡すこともできます。詳細については、『Adobe Flex 3 開発ガイド』のサブコンポーネントスタイルを参照してください。
次の表に、compatibility-version コンパイラオプションを使用した場合の、Flex SDK 2.0.1 および Flex SDK 3 における相違点を示します。
|
相違点 |
SDK 2.0.1 での動作 |
SDK 3 での動作 |
|---|---|---|
|
Button コントロールパディングのプロパティ |
paddingLeft、paddingRight、paddingTop、および paddingBottom の各スタイルの値は Button コントロールによって無視されます。 |
paddingLeft、paddingRight、paddingTop、および paddingBottom の各スタイルの値が使用されます。アイコンボタンの外観を SDK 2.0.1 の各ボタンに似せるには、paddingLeft と paddingRight の各スタイルプロパティの値を 0 に設定してください。 |
|
RadioButton コントロールの高さ |
RadioButton コントロールは、高さを決定するときにパディングプロパティを使用しません。 RadioButton コントロールのデフォルトの高さは 18 ピクセルです。 |
RadioButton コントロールは、高さを決定するときにパディングプロパティを考慮します。 RadioButton コントロールのデフォルトの高さは 22 ピクセルです。 |
|
DateChooser イヤーナビゲータスキン |
measuredHeight プロパティは、Button サイズ設定の変更により、大きくなります。 |
measuredHeight プロパティは小さくなります。 |
|
DataGrid ヘッダースキン |
DataGrid ヘッダーの背景をカスタマイズするには、DataGrid をサブクラス化して、drawHeaderBackground() メソッドを上書きします。 |
drawHeaderBackground() メソッドのロジックは、DataGridHeaderBackgroundSkin クラスにあります。さらに、headerBackgroundSkin スタイルを使用して、DataGrid ヘッダーの背景スキンのスタイルを設定することができます。 |
|
Menu コントロールの horizontalGap プロパティ |
Menu コントロールの horizontalGap プロパティのデフォルト値は 0 です。Menu に RadioButton コントロールとアイコンがある場合、両者は重なり合います。 |
horizontalGap プロパティのデフォルト値は 6 です。RadioButton または CheckBox には余白が追加されますが、MenuItem コントロールのアイコンには追加されません。 |
|
ScrollBar レイアウト |
ScrollBar の幅は、上矢印のスキンの幅によって決定されます。 |
ScrollBar コンポーネントの幅の値には、上矢印、下矢印、トラック、サムの各スキンの幅の値のうち、最も広いものが使用されます。 |
|
ScrollBar の無効化 |
無効にされた ScrollBar 上のボタン用の個別のスキンはありません。 |
ScrollArrowSkin には無効状態があります。スクロールトラックは DisplayObject から Button に変更されました。ScrollTrackSkin は現在、Button 状態をサポートしています。 |
|
ScrollBar サブコンポーネントの整列 |
上矢印、下矢印、トラックおよびサムは左揃えです。 |
上矢印、下矢印、トラックおよびサムは中央揃えです。 |
|
ScrollBar のサムの幅 |
サムの幅は、ScrollBar の幅です。 |
サムの幅は、サムの measuredWidth プロパティと同じです。 |
|
パディングスタイルと Canvas コンテナ |
パディングスタイルは Canvas コンテナには影響しません。 |
Canvas はパディングスタイルを使用します。 |
|
コンテンツサイズのコンテナ用の制約ベースのレイアウト規則 |
幅が設定されていないコンテナ内のコンポーネントで左と右のスタイルが設定されている場合、幅は無視されます。このような場合、コンポーネントの preferredWidth プロパティが使用されます。高さが設定されていないコンテナ内のコンポーネントで上と下のスタイルが設定されている場合、高さは無視されます。このような場合、コンポーネントの preferredHeight プロパティが使用されます。 次の例では、Button コントロールの幅は 40 ピクセルです。 <mx:Canvas id="mycanvas"> <mx:Button left="50" right="50"width="100" id="b"/> </mx:Canvas> |
コンテンツサイズのコンテナ内では、制約が設定されているコンポーネントの幅と高さが使用されます。前述の例では、Button コントロールの幅は 100 ピクセルです。 |
|
FormItem のパディング |
FormItem コントロールは、コントロールが複数ある場合、各コントロールの下に不要なパディングを追加します。 |
FormItem コントロールの下に、不要なパディングは配置されません。 |
|
Panel コンテナの Scale-9 |
Panel コンテナのスキンは、HaloBorder クラスを使用します。 |
Panel コンテナのスキンは、PanelSkin クラスを使用します。一部の測定ロジックが Panel クラスから削除され、PanelSkin クラスに挿入されます。 |
|
Panel コンテナの Border スタイル |
borderStyle プロパティを「solid」に設定し、Panel コンテナで borderColor および borderThickness の各プロパティを設定することができます。 |
Panel では、borderStyle プロパティの値として「default」のみがサポートされています。 borderStyle プロパティの代わりに、明示的な高さと幅と絶対位置の組み合わせを使用して、SDK 2.0.1 での動作のほとんどを複製することができます。 代替の borderStyle プロパティの PanelSkin クラス実装は、ヘッダーとコントロールバーを正しい位置にレイアウトしないため、Panel が十分な大きさになりません。 |
|
TitleWindow タイトルの整列 |
TitleWindow コントロールの textHeight プロパティは、縮尺率に合わせて調整されます。 |
TitleWindow コントロールの textHeight プロパティは、縮尺率を無視します。 |
|
Accordion ヘッダーのパディング |
Accordion ヘッダーの paddingTop および paddingBottom の各プロパティは -1 に設定されます。 |
Accordion コンテナのヘッダーの高さは、1 ~ 2 ピクセル程度異なります。 |
|
Accordion サブコンポーネントのスタイル |
Accordion ヘッダーのスタイルは、Accordion コンテナから継承されます。 |
Accordion ヘッダーは、Accordion コントロールからスタイルを継承しません。代わりに、headerStyleName スタイルが指定されている場合、ヘッダーはそのスタイルを使用します。 次の Accordion スタイルの使用は推奨されません。fillAlphas、fillColors、focusRoundedCorners、horizontalGap、selectedFillColors、および verticalGap。 |
|
ColorPicker サブコンポーネントのスタイル |
ColorPicker の色見本パネルコンポーネントは、ColorPicker コントロールからスタイルを継承します。 |
色見本に影響するスタイルが ColorPicker に設定されている場合、それらのスタイルは適用されません。代わりに、swatchPanelStyleName スタイルが指定されている場合、色見本パネルはそのスタイルを使用します。 次の ColorPicker スタイルの使用は推奨されません。backgroundColor、columnCount、horizontalGap、verticalGap、previewHeight、previewWidth、swatchGridBackgroundColor、swatchGridBorderSize、swatchHeight、swatchHighlightColor、swatchHighlightSize、swatchWidth、textFieldWidth、および textFieldStyleName。 |
|
ComboBox サブコンポーネントのスタイル |
ComboBox コントロールの List ドロップダウンは、ComboBox コントロールのスタイルを継承します。 |
List サブコンポーネントは、ComboBox コントロールのスタイルを継承しません。代わりに、dropdownStyleName スタイルが指定されている場合、List サブコンポーネントはそのスタイルを使用します。 |
|
DateChooser サブコンポーネントのスタイル |
cornerRadius および fillColors の各スタイルは、DateChooser コントロールの次月または前月のボタンサブコンポーネントに適用されます。 |
cornerRadius および fillColors のスタイルプロパティは、DateChooser 自体には適用されますが、そのサブコンポーネントボタンには適用されません。ボタンのスタイルを設定するには、skin クラスを編集するか、スタイルフィルタのリストを上書きする必要があります。 DateChooser コントロールの fillColors および fillAlphas スタイルは、使用しないことをお勧めします。 |
|
DateField サブコンポーネントのスタイル |
DateField をクリックしてポップアップする DateChooser は、DateField コントロールのスタイルを継承します。 |
DateField コントロールの DateChooser サブコンポーネントは、DateField コントロールからスタイルを継承しません。代わりに、dateChooserStyleName スタイルが指定されている場合、DateChooser サブコンポーネントはそのスタイルを使用します。 次の DateField スタイルの使用は推奨されません。cornerRadius、fillAlphas、fillColors、headerColors、headerStyleName、highlightAlphas、todayStyleName、および weekDayStyleName。 |
|
LinkBar サブコンポーネントのスタイル |
LinkBar コントロールの LinkButton サブコンポーネントは、LinkBar コントロールのスタイルを継承します。 |
LinkBar の LinkButton サブコンポーネントは、LinkBar コントロールのスタイルを継承しません。代わりに、linkButtonStyleName スタイルが指定されている場合、LinkButton サブコンポーネントはそのスタイルを使用します。 |
|
MenuBar サブコンポーネントのスタイル |
MenuBar コントロールのサブメニューは、MenuBar コントロールのスタイルを継承します。 |
MenuBar コントロールのサブメニューは、MenuBar コントロールのスタイルを継承します。代わりに、menuStyleName スタイルが指定されている場合、そのスタイルが使用されます。 backgroundAlpha および backgroundColor の MenuBar スタイルは、使用しないことをお勧めします。 |
|
NumericStepper サブコンポーネントのスタイル |
NumericStepper コントロールの上方向および下方向の各ボタンは、NumericStepper コントロールから境界線のスタイルを継承します。 |
NumericStepper の上方向および下方向のボタンは、NumericStepper コントロールから境界線のスタイルを継承しません。 NumericStepper コントロールのボタンサブコンポーネントの境界線スタイルを変更するには、NumericStepper クラスをサブクラス化し、downArrowStyleFilters および upArrowStyleFilters の各プロパティの getter を上書きする必要があります。詳細については、『Adobe Flex 3 開発ガイド』のサブコンポーネントスタイルを参照してください。 |
|
TabBar サブコンポーネントのスタイル |
firstButtonStyleName および lastButtonStyleName は、TabBar コントロールの ButtonBar コントロールから継承されます。 |
firstTabStyleName スタイルおよび lastTabStyleName スタイルは、タブのスタイルに適用されます。 |
|
PopUpManager サブコンポーネントのスタイル |
PopUp コントロールは、自身に明示的にスタイルが設定されていない場合、Application のスタイルを継承します。 |
PopUp コントロールは、所有者のスタイルを継承します。 |
|
ColorPicker アルファ |
ColorPicker コントロールの alpha プロパティの方が低いため、より明るいコントロールが生成されます。 |
ColorPicker コントロールの alpha プロパティの方が高いため、より暗いコントロールが生成されます。 |
|
Form レイアウトと FormItem レイアウト |
FormItem レイアウトの高さをパーセント値で指定した場合、正しく計算されません。 |
FormItem レイアウトコードは、BoxLayout を使用します。パーセント値で指定した高さと幅は、正しく計算されます。 さらに、Form および FormItem は現在、includeInLayout プロパティをサポートします。 |
|
パーセント値の幅の四捨五入規則 |
コンテナの幅が 275 ピクセルで、2 つの子の幅が 50%に設定されている場合、各コンポーネントの幅は 137 ピクセルです。剰余のピクセルは無視されます。 |
コンテナの幅が 275 ピクセルで、2 つの子の幅が 50%に設定されている場合、コンポーネントの幅はそれぞれ 137 ピクセルと 138 ピクセルとなります。剰余のピクセルは、どちらかのコンポーネントに追加されます。 |
|
実行時ローカリゼーション |
_CompiledResourceBundleInfo クラスは、SWC および SWF の各ファイル用には生成されません。 |
_CompiledResourceBundleInfo クラスは、SWC および SWF の各ファイル用に生成されます。 |
|
.properties ファイルの解析規則 |
.properties ファイルを解析するには、特定の文字のシーケンスを削除する必要があります。二重引用符を使用するには、¥¥" を使用します。改行文字を使用するには、¥¥n を使用します。バックスラッシュを使用するには、¥¥¥¥ を使用します。 |
.properties ファイルは、Java と同じ規則を使用します。 SDK 3 におけるプロパティファイルの解析の詳細については、『Adobe Flex 3 開発ガイド』のプロパティファイルのシンタックスを参照してください。 |
|
メタデータ |
keep-as3-metadata コンパイラオプションは flex-config.xml に設定されています。デフォルトのメタデータである Bindable、Managed、ChangeEvent、NonCommittingChangeEvent および Transient は、Flex フレームワークによって予約されています。 プロジェクト内のカスタムメタデータでサードパーティライブラリを使用する場合、メタデータを keep-as3-metadata オプションに追加する必要があります。 |
SWC ライブラリは、ライブラリ内のコードにリンクする際にリンカーで保持されるデータを定義します。 ライブラリをコンパイルする場合、keep-as3-metadata オプションは、宣言するメタデータを compc コンパイラに指示します。オプションは、予約するメタデータ名を SWC ファイルの catalog.xml ファイルに追加します。 このライブラリを使用する場合、アプリケーションのコンパイル時にメタデータを指定する必要はありません。 |
|
プロファイラ |
アプリケーションはプロファイラと互換性がありません。 |
アプリケーションはプロファイラと互換性があります。 |
|
署名済みランタイム共有ライブラリ(RSL)を使用する |
アプリケーションは、署名済みフレームワーク RSL と互換性がありません。 |
アプリケーションは、署名済みフレームワーク RSL と互換性があります。 |
|
無効なコンポーネントのアイコン |
disabledIcon プロパティを null に設定すると、コンポーネントが無効な場合にアイコンが非表示になります。 |
disabledIcon プロパティが null に設定されていても、無効なコンポーネントのアイコンは非表示になりません。Flex 2.0.1 の動作を模倣するには、スタイルの作成時に、該当するアイコンプロパティのクラスに対して null を指定します。次に例を示します。 RadioButton { icon:ClassReference(null); disabledIcon:ClassReference(null); selectedDisabledIcon:ClassReference(null); } 残りのアイコンプロパティ(downIcon や overIcon など)は適切なスキンクラス(mx.skins.halo.RadioButton など)に設定できます。 |
設定ファイルのシンタックスも、SDK 2.0.1 と SDK 3 では相違があります。カスタマイズされた flex-config.xml ファイルを使用する場合、このファイルのシンタックスと、コンパイルする SDK のシンタックスとを、必ず一致させる必要があります。SDK を変更する場合、設定ファイルを変更したほうがよい場合があります。
次の表に、設定ファイル間の相違点を示します。
|
SDK 2.0.1 |
SDK 3 |
|---|---|
|
<flash-type> true </flash-type> |
<advanced-anti-aliasing> true </advanced-anti-aliasing> |
| <!-- <locale>en_US</locale> --> | <locale> <locale-element>en_US</locale-element> </locale> |
| <!-- <source-path> <path-element>locale/{locale}</path-element> <path-element>string</path-element> </source-path> --> | <!-- <source-path> <path-element>string</path-element> </source-path> --> |
|
<external-library-path>
<path-element> libs/playerglobal.swc </path-element> </external-library-path> |
<external-library-path>
<path-element> libs/player </path-element> </external-library-path> |
|
<fonts>
<managers>
<manager-class> flash.fonts.JREFontManager </manager-class> <manager-class> flash.fonts.BatikFontManager </manager-class> </managers> </fonts> |
<fonts>
<managers>
<manager-class> flash.fonts.JREFontManager </manager-class> <manager-class> flash.fonts.AFEFontManager </manager-class> <manager-class> flash.fonts.BatikFontManager </manager-class> </managers> </fonts> |
|
<warn-class-is-sealed> false </warn-class-is-sealed> |
<warn-class-is-sealed> true </warn-class-is-sealed> |
|
<warn-deprecated-event-handler-error> false </warn-deprecated-event-handler-error> |
<warn-deprecated-event-handler-error> true </warn-deprecated-event-handler-error> |
|
<warn-deprecated-function-error> false </warn-deprecated-function-error> |
<warn-deprecated-function-error> true </warn-deprecated-function-error> |
|
<warn-deprecated-property-error> false </warn-deprecated-property-error> |
<warn-deprecated-property-error> true </warn-deprecated-property-error> |
|
<warn-level-not-supported> false </warn-level-not-supported> |
<warn-level-not-supported> true </warn-level-not-supported> |
|
該当せず |
<show-unused-type-selector-warnings> true </show-unused-type-selector-warnings> |
|
該当せず |
<!-- <target-player>version</target-player> --> |
|
該当せず |
<runtime-shared-library-path> <path-element>libs/framework.swc</path-element> <rsl-url>framework_3.0.183453.swz</rsl-url> <policy-file-url></policy-file-url> <rsl-url>framework_3.0.183453.swf</rsl-url> <policy-file-url></policy-file-url> </runtime-shared-library-path> |
|
該当せず |
<static-link-runtime-shared-libraries> true </static-link-runtime-shared-libraries> |
|
該当せず |
<!-- <compute-digest>boolean</compute-digest> --> |
| <metadata> <title>Adobe Flex 2 Application</title> </metadata> | <metadata> <title>Adobe Flex 3Application</title> </metadata> |
| <show-deprecation-warnings> true </show-deprecation-warnings> |
該当せず |
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート