2

私の目標は、3.5B から 4.6 までの範囲の Flex バージョンで構築されたクライアント (他のライブラリと Flex アプリケーションの両方) と互換性のある Flex ライブラリを構築することです。また、これは互換性と比較して二次的な問題ですが、できるだけ新しいバージョンの Flex の機能をライブラリで使用できるようにしたいと考えています。

3.5B 以下の Flex バージョンを使用する必要がありますか?

私が 3.5B で遭遇している特定の問題は、Flex を自分のライブラリに静的にリンクし、それを Flex 4.5.1A プロジェクトで使用するときです。1044: Interface method get baseline in namespace mx.core:ILayoutElement not implemented by class panels:BasePanel.

ランタイム共有リンクは、問題にある程度対処しているようです。Flex セットの RSL を使用して Flex 3.5B 用のライブラリをコンパイルすると、4.5.1A プロジェクトで正常にコンパイルされ、基本的に動作する swc が生成されますが、静的オプションが動作しないという事実に不快感を覚えます。Flex 3 で構築されたプロジェクトは Flex 4 でランタイム リンクされているため、この方法でのランタイム リンクは奇妙に思えます (ランタイム リンクで同じインターフェイスの苦情が発生しないのはなぜですか?)。

ランタイム リンクは非常にぎこちないように見えます (つまり、元のプロジェクトを 4.6 でビルドすることもできますが、4.6 より前の機能を使用して 3.5 プロジェクトで使用しないように細心の注意を払ってください)。理解。

4

1 に答える 1

3

3.5B 以下の Flex バージョンを使用する必要がありますか?

Flex Framework クラスでは、バージョン間で多くの変更が行われます。したがって、SWC が Flex SDK の複数のバージョンで機能することを保証する唯一の方法は、Flex SDK に依存関係を持たないようにすることです。

Flex 3.5B で Flex の依存関係を持つ SWC ライブラリを作成しても、Flex 4、Flex 4.5、または Flex 4.6 では必ずしも機能するとは限りません。

商用コンポーネントで多くの問題が発生しました。一例として、AutoCompleteComboBoxを取り上げます。現在、5 つの異なるバージョンがあります (Flex 3、Flex 3.2、Flex 3.5、Flex 4、および Flex 4.5 )。各バージョンには、そのバージョンの SDK に固有のバグ修正があります。Flex 3.5 では、コンポーネントを拡張する Flex ComboBox が大幅に変更されたため、コンポーネントが完全に書き直されました。

さらに、現在のバージョンとは異なるバージョンの Flex SDK でコンパイルされたライブラリを使用すると、Flex コンパイラで「奇妙な」コンパイル エラーが発生することがあります。このエラーは、メイン アプリと同じ SDK バージョンでライブラリを再コンパイルすることで解決されます。 . それはまさにあなたが見ているものだと思います。

つまり、Flex SDK の複数のバージョン用に作成されたプロジェクトで SWC を使用する場合、互換性を保証する唯一の方法は、SWC で Flex SDK に依存しないようにすることです。

于 2012-06-13T20:15:48.337 に答える