FlashとFlexのコンパイラの違いについて教えてください。(急いでいるので、ベストな回答には300pt差し上げます)


あるプロジェクトで、ActionScriptで書かれたソースを引き継ぎました。
開発は、プロジェクトの事情で、Flash CS3 Professionalでおこなっています。

そのソースコード中にmx.*というパッケージが使われていました。
しかし、Flash CS3上でコンパイルするとコンパイルが通ってしまいます。

調べてみたかぎりだと、Flash CS3が使用するパッケージは fl.* で、
mx.* はFlexが使用するパッケージとの認識なのですが、
なぜコンパイルが通ってしまうのでしょうか?

ちなみに、私の環境にはFlex Builderはインストールしていません。

初心者な質問で申し訳ありませんが、よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2008/06/01 19:16:01
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:nitoyon No.2

回答回数2ベストアンサー獲得回数1

ポイント300pt

Flex のコンポーネントが mx.* の名前空間を利用する、というのは正しいです。


Flash IDEではFlash 8以前とFlash CS3(Flash 9)で名前空間が異なります。Flash 8以前のコンポーネントは mx 名前空間にあります。id:tedmans さんが張ってるのも Flash MX(ActionScript 2)のドキュメントですね。


Flash CS3 からはコンポーネントは fl 名前空間に移動しました。これは、おそらく Flex のものと混乱しないように名前空間を分けたかったのでしょう。Flex に比べ、Flash CS3 のコンポーネントは低機能ですがシンプルでそのぶん、高速な

動作をするようです。


さて、「Flash CS3 で mx 名前空間を利用しているファイルをコンパイルできた」とのご質問ですが、これは ActionScript 2 を利用する設定になっているからでしょう。


kanouk さんがコメント欄に書いている createClassObject や mx.xpath.XPathAPI は Flash 8(ActionScript2)のクラスや関数ですね。

Adobe - Design Center : Flash 8からFlash CS3 Professionalへの移行が参考になると思います。

ActionScript 3.0が導入されとはいえ、すぐに移行できる人ばかりではありません。ActionScript 2.0で制作する機会もあるでしょう。Flash CS3では、V2コンポーネントも使用できるようになっています。

新規ファイルを作成する際に、ファイルタイプから「Flashファイル(AS2.0)」を選ぶと、コンポーネントパネルにはV2コンポーネントが表示されます。ファイルタイプから「Flashファイル(AS3.0)」を選ぶと、コンポーネントパネルにはActionScript 3.0コンポーネントが表示されます(図41)。

ちなみに、V2 コンポーネントというのが ActionScript2 で作成された Flash 8 付属のコンポーネント群のことです。

id:kanouk

ありがとうございます!

よくわかりました。

2008/06/01 19:14:34

その他の回答1件)

id:tedmans No.1

回答回数114ベストアンサー獲得回数3

ポイント5pt

普通にFlashのコンポーネントとして扱えるよ


http://livedocs.adobe.com/flash/9.0_jp/main/wwhelp/wwhimpl/commo...

Flash CS3 ドキュメンテーション

ActionScript 2.0 コンポーネントリファレンスガイド > DataGrid コンポーネント > DataGrid クラス

DataGrid クラス

継承 MovieClip > UIObject クラス > UIComponent クラス > View > ScrollView > ScrollSelectList > List コンポーネント > DataGrid

ActionScript クラス名 mx.controls.DataGrid

各コンポーネントクラスには version というクラスプロパティがあります。クラスプロパティは、クラス自体に対してのみ使用できます。version プロパティは、そのコンポーネントのバージョンを表すストリングを返します。このプロパティにアクセスするには、次のコードを使用します。

trace(mx.controls.DataGrid.version);

メモ

コード trace(myDataGridInstance.version);は undefined を返します。

id:kanouk

ありがとうございます。

2008/06/01 19:14:43
id:nitoyon No.2

回答回数2ベストアンサー獲得回数1ここでベストアンサー

ポイント300pt

Flex のコンポーネントが mx.* の名前空間を利用する、というのは正しいです。


Flash IDEではFlash 8以前とFlash CS3(Flash 9)で名前空間が異なります。Flash 8以前のコンポーネントは mx 名前空間にあります。id:tedmans さんが張ってるのも Flash MX(ActionScript 2)のドキュメントですね。


Flash CS3 からはコンポーネントは fl 名前空間に移動しました。これは、おそらく Flex のものと混乱しないように名前空間を分けたかったのでしょう。Flex に比べ、Flash CS3 のコンポーネントは低機能ですがシンプルでそのぶん、高速な

動作をするようです。


さて、「Flash CS3 で mx 名前空間を利用しているファイルをコンパイルできた」とのご質問ですが、これは ActionScript 2 を利用する設定になっているからでしょう。


kanouk さんがコメント欄に書いている createClassObject や mx.xpath.XPathAPI は Flash 8(ActionScript2)のクラスや関数ですね。

Adobe - Design Center : Flash 8からFlash CS3 Professionalへの移行が参考になると思います。

ActionScript 3.0が導入されとはいえ、すぐに移行できる人ばかりではありません。ActionScript 2.0で制作する機会もあるでしょう。Flash CS3では、V2コンポーネントも使用できるようになっています。

新規ファイルを作成する際に、ファイルタイプから「Flashファイル(AS2.0)」を選ぶと、コンポーネントパネルにはV2コンポーネントが表示されます。ファイルタイプから「Flashファイル(AS3.0)」を選ぶと、コンポーネントパネルにはActionScript 3.0コンポーネントが表示されます(図41)。

ちなみに、V2 コンポーネントというのが ActionScript2 で作成された Flash 8 付属のコンポーネント群のことです。

id:kanouk

ありがとうございます!

よくわかりました。

2008/06/01 19:14:34
  • id:kanouk
    具体的には、

    createClassObject(mx.controls.DataGrid, ...);

    とか

    mx.xpath.XPathAPI.selectSingleNode(this, sXPath);

    のようなソースコードです。

    よろしくお願いします。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません