あるプロジェクトで、ActionScriptで書かれたソースを引き継ぎました。
開発は、プロジェクトの事情で、Flash CS3 Professionalでおこなっています。
そのソースコード中にmx.*というパッケージが使われていました。
しかし、Flash CS3上でコンパイルするとコンパイルが通ってしまいます。
調べてみたかぎりだと、Flash CS3が使用するパッケージは fl.* で、
mx.* はFlexが使用するパッケージとの認識なのですが、
なぜコンパイルが通ってしまうのでしょうか?
ちなみに、私の環境にはFlex Builderはインストールしていません。
初心者な質問で申し訳ありませんが、よろしくお願いします。
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 付属のコンポーネント群のことです。
普通に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 を返します。
ありがとうございます。
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 付属のコンポーネント群のことです。
ありがとうございます!
よくわかりました。
ありがとうございます!
よくわかりました。