- ベストアンサー
AS2.0クラスパス設定方法
- AS2.0では、クラスパスの設定方法に制約があります。
- 階層が異なる場合には、相対パスを指定することでクラスを呼び出すことができますが、上の階層のクラスを指定する方法については制限があります。
- 特定のディレクトリ以下にあるクラスを指定する場合は、ドキュメントレベルのクラスパスを設定する必要がありますが、正しく設定できないとエラーが出ることがあります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
フォルダの構成が dir ┣ sub ┃ └ submovie.fla ┗ cls ┗ hoehoe └ test.as このようになっているとします。 test.as で、クラス宣言部分を class cls.hoehoe.test と、” cls ”フォルダを基点にしたパスにした場合は、submovie.fla のクラスパス設定で” ../ ”を追加して import cls.hoehoe.Test; とすればインポートできます。 クラス宣言部分が class test の場合は、クラスパス設定に” ../cls/hoehoe ”を追加すると import test; でインポートできます。 クラスパスの追加はグローバルレベル(「編集」→「環境設定」→” ActionScript ”タブで設定するクラスパス)でもドキュメントレベル(「ファイル」→「パブリッシュ設定」→” Flash ”タブで設定するクラスパス)でも構いませんが、その作品限りのクラスパスならばドキュメントレベルで充分です。 **************************************** グローバルレベルのクラスパスにある $(LocalData)/Classes は、Flash をインストールしたフォルダ内の” Classes ”フォルダからクラスを読み込むとの意味と思われます。 アプリケーションをインストールするフォルダはユーザーごとに異なるので、$(LocalData) という特殊な変数を使って記述されているのだと思います。 つまり、$(LocalData)/../cls では Flash をインストールしたフォルダを基準にしたパスになってしまうので、クラスの読み込みに失敗するのではないでしょうか。 ちなみに、 dir ┠ hoehoe.fla ┗ cls ┗ hoehoe └ test.as このようなフォルダ構成で、test.as のクラス宣言が class cls.hoehoe.test の時に、hoehoe.fla で import cls.hoehoe.test としてインポートできる理由は、グローバルレベルのクラスパスには、先の” $(LocalData)/Classes ”とともに” . ”という、fla ファイル自身と同じ階層を表す相対パスが登録されているからです。 デフォルトではこの2つしか登録されていないため、コンパイラは、Flash をインストールした階層の” Classes ”フォルダと制作中の fla ファイルがある階層しかクラスを探しません。 ですから、もう1つ上の階層も探すようにクラスパスを追加すると、1つ上のフォルダにあるクラスも読み込めるようになるというわけです。
お礼
ありがとうございます。 「FlashActionScript2.0入門」という本を読んだら特に説明なく $(LocalData)が使われていたので、これが flaの存在する場所かと思ったんですが違うのですね。 ../cls とすることで動作しました。