私の現在の開発スタックは、MySQL + iBatis + Spring + Spring BlazeDS Integration 1.01 + BlazeDS 3.2 および Flex 3 と Mate 0.8.9 フレームワークです。現在、Flash Builder 4 ベータ 2 がリリースされています。データ セントリック開発 (DCD)、フォーム生成などの優れた機能があります。Spring Blazeds Integration が BlazeDS 4 とどのように連携するか知っていますか? メイトはどうですか?Flex 4 に問題はありますか? DCD がメイト イベントマップとどのように適合するか。自分で試してみたほうがいいのはわかっていますが、誰かが Flex 4 への移行を試みたかどうかを確認したいだけです。もしそうなら、どのような問題がありますか? 生産性のスピードアップに気づきましたか? ありがとう。
2 に答える
サードパーティ コンポーネントの移行については何も言えません。私はあなたが言及したものを使用しません。
ただし、既存のプロジェクトを単純に Flash Builder 4 にロードし、SDK を 4.0 に変更して、再コンパイルすることを期待することはできません。Flex 4 では多くのことが変更されましたが、多くの場合互換性がありません。
これまでに私が遭遇したものは次のとおりです。
これで、Spark と MX という 2 つの並列コンポーネント ライブラリができました。MX は古い Flex 3 コンポーネント ライブラリであり、Halo と呼ばれることもありますが、これは技術的にはデフォルト スキンの名前にすぎません。Spark は新しい Flex 4 コンポーネント ライブラリであり、MX を部分的に置き換えるだけです。
それらは相互運用します。1 つのアプリで両方を使用することが許可されており、Spark コンポーネントを のような MX レイアウト コンテナーに配置することができます
ViewStack
。GUI レベルでの相互運用性がないため、問題を心配することなく、一方が Spark を使用し、もう一方が MX を使用するアプリケーションの自然な分割もあります。たとえば、ダイアログ ボックスはそのようなものです。彼らがこれをすべて行った理由は、あなたが聞いてきたこの新しいスキニング機能をサポートするためです: Flash Catalyst、FXGなど。標準の Halo スキンを使用している場合、それがThe Futureであるという事実を除いて、Spark が重要であることはわかりません。
(余談: オズの魔法使いのブーミーなエコー効果を得るための Markdown 構文は何ですか?)
Joan Lafferty (Flex SDK Quality Lead) は貴重な記事、Differences between Flex 3 and Flex 4 を持っています。4ページには、Flex 4 の Spark コンポーネントに置き換えられていない Flex 3 MX コンポーネントを一覧にした表があります
Accordion
。のようなダイアログボックスのようなものAlert
。(この記事の残りの部分を読む必要があります。まだすべての違いに遭遇したわけではないので、私が扱っていないことについても説明しています。)スキンといえば、Flex 3 の MX スキンのうち Flex 4 でサポートされているのは 2 つだけです。よりカラフルな MX スキンはなくなりましたが、できることのいくつかを示すカラフルな Spark ベースのスキンの新しいセットがあります。 FXGなどで。彼らが削除したものの 1 つが本当に気に入った場合は、間違いなく Spark 上でそれらを再作成できますが、そのままでは利用できません。
多くのものが名前変更されており、MX コンポーネントの一部の Spark 代替品は異なるインターフェイスを持っているため、異なる名前になっています。たとえば、完全に Spark に移行するには、
VBox
es をVGroup
s に変更する必要があります。このように、気になる小さな違いがたくさんあります。<Script>
デュアル GUI ライブラリ全体のおかげで、Adobe は、実際には MX の一部ではないや などの MXML タグを多数使用していることに気付きました<Style>
。これらは、Spark でも同様に機能します。タグのセットを重複させるのではなく、これらを新しい XML 名前空間に移動しました。これは、既存の MX ベースのアプリを部分的に移行する場合の問題です。これはmx
、MX コンポーネント ライブラリのエイリアスを引き続き使用していることを意味するため、両方のライブラリに共通するこれらのタグはすべて名前を変更する必要があるためです。これらのタグの新しい XML 名前空間のデフォルトはfx
であるため、すべての名前<mx:Script>
を に変更する必要が<fx:Script>
あります。IDE は、プロジェクトのインポート時にこれを行いません。インポートしたプロジェクトをビルドしようとするときに、それらを 1 つずつ見つけるだけです。完全に Spark に移行することを計画している場合は、ここでの苦労を避けることができます。MX 以外のタグでデフォルトの名前空間エイリアスを受け入れる代わりに、
fx
引き続き を使用することができます。これmx
は、MX には必要なく、Spark がs
デフォルトとして使用するためです。Flash Builder 4 をインストールした後の最初のタスクは、新しく新しいプロジェクトを生成して、それを調べて、そこからこれらの名前空間宣言などをコピー アンド ペーストできるようにすることです。
MX 全体と Spark および名前空間の混乱のもう 1 つの問題は、CSS の微調整が必要になる可能性があることです。Flex には、このための非標準の CSS 拡張機能があり、次のようになります。
@namespace mx "library://ns.adobe.com/flex/mx"; mx|Application { ....
すべてのネームスペース URL は、Flex 3 と Flex 4 の間で変更されており、Flex 4 ベータ プロセス中に少なくとも 1 つのインスタンスで再度変更されています。
http://www.adobe.com/2006/mxml
今http://ns.adobe.com/mxml/2009
library://ns.adobe.com/flex/halo
は今library://ns.adobe.com/flex/mx
埋め込まれたフォント名を CSSの
local()
共通名で指定するフォームが機能しなくなりました。フォームを使用url()
して、フォント ファイルへのパスを指定する必要があります。ここで気をつけなければならないのは、1 つのフォントの複数のバリエーション (通常のウェイトと太字のウェイトなど) を埋め込む場合、以前のコードは同じフォント名を参照していたのに、新しいコードは 2 つの異なるファイルを指していることです。 2 つの重みが同じ .ttf または .otf ファイルにありません。たとえば、これは次のとおりです。
@font-face { src: local("Verdana"); fontFamily: VerdanaEmbedded; fontWeight: normal; } @font-face { src: local("Verdana"); fontFamily: VerdanaEmbedded; fontWeight: bold; }
これに変更する必要があります:
@font-face { src: url("/Library/Fonts/Verdana.ttf"); fontFamily: VerdanaEmbedded; fontWeight: normal; } @font-face { src: url("/Library/Fonts/Verdana Bold.ttf"); fontFamily: VerdanaEmbedded; fontWeight: bold; }
fontWeight
Flex 3 では、コンパイラは属性に基づいて、上記のコードが参照している 2 つの .ttf フォント ファイルを推測しました。Flex 4 では、コンパイラによって明示的に通知されます。アプリケーションにフォントを埋め込んで MX コントロールを使い続けると、テキストが消えるか、既定のフォントに戻る可能性があります。これは、Flash Player 10 の改善されたフォント レンダリング エンジンをサポートするために、Flex 4 が内部で別のフォント埋め込みメカニズムをデフォルトで使用しているためです。
embedAsCFF
CSS 属性をに設定する必要がありますfalse
。状態のメカニズムはまったく異なります。この Flex 3 コード:
<mx:State name="alternate"> <mx:SetProperty target="{myField}" name="editable" value="false"/> </mx:State> .... <mx:Form ...> <mx:TextInput id="myField"/> .... </mx:Form>
Flex 4 では次のようになります。
<mx:State name="alternate"/> .... <mx:Form ...> <mx:TextInput id="myField" editable.alternate="false"/> .... </mx:Form>
新しい方法は、詳細なブロックで MXML ファイルの先頭に行くのではなく、すべての個々のコンポーネントの状態をコンポーネント タグ自体に配置するため、私にはより理にかなっていますが
<mx:State>
、新しいメカニズムへの移植は少し面倒です。挽く。変換は IDE によって自動化されていませんが、実際には可能です。タグの直接の子として許可されなくなったタグがいくつかあります
<Application>
。これらはいくつかのカテゴリに分類されます: バリデーター、エフェクトなどです。次のように、これらを新しい<fx:Declarations>
タグにまとめる必要があります。<fx:Declarations> <mx:Dissolve id="myTransition" duration="100" target="{this}"/> </fx:Declarations>
Flash Builder には新しいプロジェクト オプションがあり、簡単に移行できるように、Spark をまったく使用せずに Flex 3.5 SDK のみを引き続き使用できます。これは最初のテストには適していますが、ある時点で先に進みたいと思うようになり、その時点で上記のすべてに対処する必要があります。
私には、新しいコンパイラもそれほど速くはないように思えます。私はそれをベンチマークしていませんが、ただ感じているだけです。それは私にとって本当に重要なことです. :) それは確かに私の開発ボックスで他の 7 つのコアを使用していません。うーん。
役立つ可能性のあるいくつかのことを次に示します。
- BlazeDS の最新バージョンは 3.2.0.3978 です。新しいリリースのアナウンスは聞いていません。
- 同じバージョンの BlazeDS を維持するため、既存のコードを Flex 4 に移植しても、バックエンド (Spring BlazeDS 統合、iBATIS、MySQL など) には影響しません。
- Mate はまだ正式に Flex 4 をサポートしていません。切り替えようとすると、コンパイル エラーが発生しました。回避策に関する議論へのリンクと、Flex 4 ポートへのリンクを次に示します。
幸運を!