3

私は Flex の初心者であり、記述するすべてのコントロール宣言に対して名前空間 mx: を記述しなければならない方法が好きではありません。コードが煩雑になります。私は書きたい:

<Panel ...

それよりも

<mx:Panel ...

書いてみた

xmlns="http://www.adobe.com/2006/mxml"

の代わりに最上位要素の

xmlns:mx="http://www.adobe.com/2006/mxml"

トップレベルの宣言。これはある程度機能しますが、既存のコードの一部が壊れました。たとえば、ドキュメントで定義されている XML データはすべて、実行時に名前空間として aaa: が追加されます。また、私の非常に小さなサンプル プログラムに他の問題があることにも気付きました。

これを行う方法はありますか、それともこれは失われた原因ですか? そして、その理由に関するいくつかの背景情報をいただければ幸いです。

更新: 返信ありがとうございます。実際にこれを試して重要だと思った人からの連絡をお待ちしております。ほとんどの人はそれは悪い考えだと言っていましたが、私はがっかりしませんでした。現在、この方法でスムーズに動作するプログラムがいくつかあります。そして、私のすべてのフレックスアプリでこれを行う予定です。普遍的に機能するとは言えませんが、1つのトリックが機能しているように見えました. たとえば、ドキュメント内で個別の名前空間が必要な場合は、HTTPService パラメーターを使用して、次のようにその要素内に名前空間を作成できます。

    <HTTPService id="サービス" url="http://blah.com"
        method="POST" result="gotResult(イベント)">
        <リクエストxmlns:p="*">
            <p:param1>p1</p:param1>
            <p:param2>p2</p:param2>
        </リクエスト>
    </HTTP サービス>

これが誰かに役立つことを願っています。通常の html ファイルとほぼ同じくらいクリーンなコードになったことに非常に満足しています。コード全体に mx: を書いたほうがわかりやすいと考える人については、私は完全に同意しません。コード内で同じ文字シーケンスを過度に繰り返す必要がある言語 (ドキュメントと見なす必要があります) には、設計上の欠陥があると思います。ここに例えがあります: バラク・オバマに関する記事を読んでいて、すべての文に「バラク・オバマ」という言葉が含まれていたら、かなりうんざりしますよね?

4

6 に答える 6

7

プロジェクトが大きくなるにつれて、mx 名前空間を削除すると、ほぼ確実に名前の競合の問題が発生すると思います。

個人的には、特にコンポーネント ベースのフレックス開発や独自のコントロールが多い場合は、mx 名前空間を使用すると、コードが煩雑になるのではなく、より明確になると思います。過去 2 年間、大規模なフレックス コード ベースを所有してきた私は、特にアイテム レンダラーなどのカスタム オブジェクトがインラインで埋め込まれている場合は、mx 名前空間が目立たないことに気付きました。

私の推奨事項 (非科学的に主張されています) は、特にそれを削除するときに問題が見つかった場合は、それを我慢することです。しばらくすると気がつかなくなると思います。

于 2008-11-12T17:11:40.030 に答える
2

コントロールの定義を参照する XML 名前空間であるため、mx またはいくつかの xmls:[SOMETHING HERE] が必要です。通常のコードで名前空間を使用するようなものです。

Panel を記述するだけでは曖昧であり、別の人の Panel の実装と競合する可能性があります。したがって、Panel が属する名前空間 ( http://www.adobe.com/2006/mxml ) を Flex に宣言し、mx でエイリアスします。

Microsoft の WPF XAML でもこれが必要です。

于 2008-11-12T17:08:20.520 に答える
2

意見の相違の声になるだけで...

Ely Greenfieldsのコードを掘り下げる際に、彼は多くのことを行っています。Flex SDK チームの他の開発者がそれを行っているかどうかはわかりませんが、そうするという議論にある程度の信憑性を与えています...そうですか?

于 2008-11-14T01:03:37.887 に答える
1

ここでの他の回答の大部分に同意します。そのままにしておくのが最善です。最終的には、カスタム コンポーネントなどに他の名前空間を使用したいと思うようになり、区別するために名前空間が必要になります。次に、名前空間のあるものとないものがあります。

他の誰かがあなたのコードを見なければならないかもしれず、mx がない場合よりも mx を使った方がはるかに読みやすいと思うかもしれないので、他の理由がなければ、そのままにしておくべきだと思います。

于 2008-11-19T20:54:44.233 に答える
0

モバイル デバイスを含むあらゆる種類のプラットフォームで実行する必要があるアプリケーションを開発している場合は、最近のほとんどのモバイル デバイスでサポートされているので、できるだけ純粋な Spark を使用することをお勧めします。たとえば、アコーディオンのような mx コントロールの使用を余儀なくされる場合があります。この場合、それを実装する時間があれば、ツールまたは spark の基本的なコントロールを使用して、代わりに使用するこれらのより高度または複雑なコントロールを作成するのが賢明です。

于 2012-06-22T18:29:52.890 に答える
0

mx: は、Panel (他のコンポーネントと同様) が Flex フレームワークの一部であり、Flex に組み込まれていることを Flex に伝える方法にすぎません。これにより、Flex は Panel を探す場所を知ることができ、コンパイル プロセスが高速化されます。

local: を使用して、作成したコンポーネントにアクセスすることもできます。例: パネルに機能を追加したい場合は、コードを入力し、それを MyPanel という名前のカスタマイズされたパネルとして保存します。それらを使用して、Flex に MyPanel が私のコンポーネントであることを伝えることができ、Flex は私のプロジェクトのどこかにあるかどうかを見つけることができます。もちろん、好きな名前を付けることができます:-)

特に HTML や XML の経験が豊富な場合は特に、最初は mx: が見苦しく見えますが、慣れるでしょう。

于 2009-05-02T12:32:55.317 に答える