Flex / Flash Builder を何年も使用しています。Flash Builder の最新リリース (4.7) にはかなりの数の問題があるようですが、その最大のものは次のとおりです。
ID
MXML でcomponent を検出しません。たとえば、コンポーネントの ID の使用箇所を見つけることはできません。コンポーネントの ID にカーソルを置いたままにしても、ID の出現はマークされません。代わりに、MXML 内の実際の単語の出現をマークします。id
- 非常に遅い。
IntelliJ IDEA 12 への移行を真剣に検討しています。特に、多くの経験豊富な Flex 開発者が IntelliJ IDEA 12 について絶賛し、推奨しているのを読んだ後です。
私はそれを試してみました。IDE の新しい用語を理解するのにしばらく時間がかかりました (このドキュメントと JetBrains の非常に親切なサポート担当者によって簡単になりました)。
Adobe Flex 4.6 SDK を使用して IDEA で (大規模な) プロジェクトをセットアップし、正常にコンパイルすることができました。しかし、AS ファイルで強調表示されている多くの「エラー」に気付きましたが、これらはすべて実際には誤報です。
ActionScript エディターは、MXML で定義されたオブジェクトを認識していないようです。どうやら、これは IDEA の既知のバグです (追跡はこちら)。そして、このバグは 2 年以上存在していました。
JetBrains サポート担当者の引用:
クラスを含まないが、代わりに
mxml
asに含まれる ActionScript ファイルの強調表示は<fx:Script source="some_file.as"/>
、おそらく IntelliJ IDEA コードの強調表示の唯一の弱点であることを認めなければなりません。<fx:Script/>
外部*.as
ファイルとして参照するのではなく、CDATA 内に AS コードを埋め込むと、誤ったエラーの強調表示がなくなります。これが常に望ましいとは限らないことは理解していますが。残念ながら、リリースが非常に早く、修正はリスクが高すぎるため、修正は 12 リリースには含まれません。問題の優先度は、投票とユーザーからのフィードバックによって異なります。これまでのところ、2 票しかありません (http://youtrack.jetbrains.com/issue/IDEA-52598)。修正は非常に複雑であるため、これはまれな使用例であると考えて、まだ実装していません。12.x アップデート リリースの 1 つで修正したいと考えています。
私のプロジェクトは巨大なもので、巨大な MXML ファイルと、各 MXML 用のさらに巨大な AS コードがあります。したがって、整理するために、それらをより小さなファイルに論理的に分割する必要があります。したがって、AS コードを MXML とマージすることは実用的ではありません。誤ったエラーの強調表示は、コードの可読性を大幅に低下させます。また、AS コード内のコンポーネント ID をControl / Command キーを押しながらクリックしても、MXML 内のコンポーネントの定義にすばやく移動できません(ちなみに、これは FB 4.7 でも機能しなくなりましたが、FB 4.6 ではうまく機能しました)。
残念ながら、IDEA のこのバグは、私にとって大きな問題です。しかし、他の Flex 開発者がこの一見重大なバグをどのように克服/回避できるのか疑問に思っています。
特に IDEA を推奨する非常に多くの Flex開発者がいるにもかかわらず、このバグの影響を受けたのは 2 人だけというのは信じられないことです。多分私は何か間違ったことをしていますか?
Flex 開発者の皆様、ご意見をお待ちしております。
アップデート
これは、RIAStar の優れた詳細な回答に対する回答です。しかし、それは私を完全に助けるわけではありません。を使用する理由と方法を説明しましょう<fx:Script source>
。Flex 4.x を使用しており、ほとんど Spark コンポーネントのみです。
- まったく新しい Flex プロジェクトがあるとします。主なアプリケーションは MXML ファイルです。
- この MXML ファイルに、サインアップ フォームがあるとします。
- フォームを (各フィールドで) 編集するときに、検証を実行し、フォームが完全に有効な場合にのみ [送信] ボタンを有効にする必要があるとします。これは、変更イベント ハンドラをフォーム アイテムに割り当てる必要があることを意味します。イベント ハンドラは AS コードです。
- サーバーを非同期的に呼び出すことにより、型の一意性チェックが必要なユーザー名フィールドがあるとします。サーバー通信コードもASコードです。
- そしてもちろん、送信ボタン ハンドラーもあり、これも AS コードです。
私は通常、すべての AS コードを別々の.as
ファイルに入れ、.xml を使用して MXML に含めます<fx:Script source>
。通常、この AS コードは非常に重く、多くの機能ロジックと動作ロジックが含まれています。多くの場合、ユーザーの操作に基づいて、MXML 内のコンポーネントや要素のレイアウトでさえ、この AS コードによって変更されます。
皆さんの理解が正しければ、このイベント ハンドラー コードは、これらの MXML スクリプト ファイルに含めるべきではありません。それで、それはどこにあるべきですか?皆さんはどのようにしますか?Spark Skinning アーキテクチャがこれにどのように関係しているかはわかりません。