トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     パッケージとインターフェース
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nao
Åê¹ÆNo.11079
投稿日時: 2004-9-25 15:35
職人
居住地:
投稿: 208
使用環境:
WinXP Pro
Flash8 Professional
パッケージとインターフェース
Naoです.

パッケージ空間の中でのインターフェースの定義がうまくいかないんですがどうやって回避すればよいのでしょうか?
下記に状況が出るようなサンプルを書いてみました.

/Test.fla
 |
 /package
   |
   /TestInterface.as
   /TestClass.as

[TestInterface.as]
import package.as;

interface package.TestInterface {
}


[TestClass.as]
import package.*;

class package.TestClass implements TestInterface {
	
}


[test.fla]
var objTest = new package.TestClass();


test.flaの方で実行すると問題ないのですが,
TestClass.asをシンタックスチェックすると

引用:
コンパイルされたクラス 'package.TestInterface' が読み込まれたクラス 'TestInterface' に一致しません。

というエラーがでてしまいます.

flaファイルで実行すれば問題ないのですがシンタックスチェックでもちゃんと通るようにするにはどうすればよいのでしょうか?

よろしくお願いします.m(_ _)m


----------------
nao [seto@graffiti-web.org]

野中文雄
Åê¹ÆNo.11080
投稿日時: 2004-9-25 16:21
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: パッケージとインターフェース
クラスパスがflaファイルからの相対パスですので、flaファイルのパスが決まらないと検索ができないためです(同じパッケージでも、融通は利きません)。グローバルクラスパスを追加して、そこにパッケージを格納する必要があります。
引用:
Naoさんは書きました:
/Test.fla
 |
 /package
   |
   /TestInterface.as
   /TestClass.as

[TestInterface.as]
// インタフェースはメソッドの型指定のみですので不要でしょう
// import package.*;

interface package.TestInterface {
}

[TestClass.as]
import package.*;

class package.TestClass implements TestInterface {
	
}


[test.fla]
var objTest = new package.TestClass();

test.flaの方で実行すると問題ないのですが,
TestClass.asをシンタックスチェックすると

引用:
コンパイルされたクラス 'package.TestInterface' が読み込まれたクラス 'TestInterface' に一致しません。

というエラーがでてしまいます.


----------------
 

ゲスト
Åê¹ÆNo.11081
投稿日時: 2004-9-25 16:51
Re: パッケージとインターフェース
[TestInterface.as]を

interface TestInterface {
}

こうすればOKじゃないでしょうか。('package.'がいらない)。
あと1行目のimport文もいらないですね。
TestClass内のimport文もいらないと思います。
nao
Åê¹ÆNo.11082
投稿日時: 2004-9-25 19:26
職人
居住地:
投稿: 208
使用環境:
WinXP Pro
Flash8 Professional
Re: パッケージとインターフェース
野中さんVOSTOKさんありがとうございます.

>野中さん
やはりtest.flaからのクラスパスが確定できないということだったのですね.
m(_ _)m


>VOSTOKさん
それだと今度test.flaの実行時にエラーが出てしますと思いうんですが…(._・)>?

ドキュメントレベルクラスパスに今回は追記しようかと思いますが
大規模になってくるとちょっと微妙かなという気もします…


----------------
nao [seto@graffiti-web.org]

野中文雄
Åê¹ÆNo.11089
投稿日時: 2004-9-26 2:38
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: パッケージとインターフェース
「ドキュメントレベル」ということは、flaファイルごとの設定ですから、同じ結果になりませんか?
引用:
Naoさんは書きました:
ドキュメントレベルクラスパスに今回は追記しようかと思いますが

flaファイルのパスは関係なくパッケージを管理でき、自分用のクラスライプラリをつくりこめる「グローバルクラスパス」の使用が適しているように思われます。
引用:
大規模になってくるとちょっと微妙かなという気もします…


----------------
 

nao
Åê¹ÆNo.11101
投稿日時: 2004-9-26 18:19
職人
居住地:
投稿: 208
使用環境:
WinXP Pro
Flash8 Professional
Re: パッケージとインターフェース
引用:
「ドキュメントレベル」ということは、flaファイルごとの設定ですから、同じ結果になりませんか?

あ,グローバルクラスパスですね…

引用:
flaファイルのパスは関係なくパッケージを管理でき、自分用のクラスライプラリをつくりこめる「グローバルクラスパス」の使用が適しているように思われます。

プロジェクトごとにいくつものパッケージを作成していくとそのつどグローバルクラスパスを追加しないとだめですよね…

シンタックスチェックで行うのであれば
flaファイルと同階層に
import package.*;

class Test {
  public function Test() {
    var objTestClass = new TestClass();
  }
}

というテストスクリプト作ってあげる方法もありですかね.

個人的にはやっぱりシンタックスチェックを使うのではなく,
AS2Unitなどを使ってflaファイルにドキュメントレベルにパスを追加してあげたものでテストするのがいいのかなぁと思いました.


----------------
nao [seto@graffiti-web.org]

野中文雄
Åê¹ÆNo.11131
投稿日時: 2004-9-28 16:38
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: パッケージとインターフェース
グローバルクラスパスはひとつにして、パッケージパスに各プロジェクトの識別を含めることはできないのでしょうか? 各プロジェクトごとのクラスはそのプロジェクトのパッケージ、汎用的なクラスはライブラリのパッケージというように分けて管理できることが、パッケージのおもな目的だと思います。
グローパルクラスパス
 |- mylibs
 |- project01
 |- project02

引用:
Naoさんは書きました:
プロジェクトごとにいくつものパッケージを作成していくとそのつどグローバルクラスパスを追加しないとだめですよね…


----------------
 

nao
Åê¹ÆNo.11181
投稿日時: 2004-9-30 3:26
職人
居住地:
投稿: 208
使用環境:
WinXP Pro
Flash8 Professional
Re: パッケージとインターフェース
--------------------------
/frameworkPackage
|
/project01Package
  |
 /subPackege01
   |
   /subPackage01_01
   |
   /subPackage01_02
  |
 /subPackage02
  |
 /subPackage03
|
/projec02tPackage
--------------------------

ってな感じでプロジェクト内にもいくつかpackageが存在して
時にはそのサブパッケージも作成することがあるんです.

そのときに,シンタックスチェックでコンパイルをするとなると
グローバルクラスパスを追加になっちゃうなぁと…


----------------
nao [seto@graffiti-web.org]

野中文雄
Åê¹ÆNo.11182
投稿日時: 2004-9-30 7:29
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: パッケージとインターフェース
使う方のスタイルに合わせて、便利な方法を採られてよいと思います。

ただ、おそらくお手本にされているJavaでは、誰のパッケージをグローバルクラスパスに追加しても、重複のないようにすることが作法のようです。つまり、パッケージパスは、世界中に対してユニークに定めます。

私たちの知る世界中に対してユニークな識別子は、ドメイン名です。したがって、パッケージパスは、ドメイン名を逆さにして始めるそうです。たとえば、私のパッケージでしたら、com.fumiononaka.ui. ... という感じです。

colinがMXの頃、FlashForwardで、このスタイルにもとづくグローバル空間(ネームスペース)の使い方を紹介しています。

FACESs Project訳:「コードの構造: MessageDialogの例

importステートメントが欠かせなくなりますし、日本語ドメインだったらどうするかといった問題はありますが。
引用:
Naoさんは書きました:
--------------------------
/frameworkPackage
|
/project01Package
  |
 /subPackege01
   |
   /subPackage01_01
...[中略]...
--------------------------

ってな感じでプロジェクト内にもいくつかpackageが存在して
時にはそのサブパッケージも作成することがあるんです.


----------------
 

nao
Åê¹ÆNo.11215
投稿日時: 2004-10-1 1:53
職人
居住地:
投稿: 208
使用環境:
WinXP Pro
Flash8 Professional
Re: パッケージとインターフェース
引用:
使う方のスタイルに合わせて、便利な方法を採られてよいと思います。
ただ、おそらくお手本にされているJavaでは、誰のパッケージをグローバルクラスパスに追加しても、重複のないようにすることが作法のようです。つまり、パッケージパスは、世界中に対してユニークに定めます。


いろいろ試行錯誤してもっとスタイルをはっきり出来るようになればなぁと思います.
ありがとうございました.

引用:
importステートメントが欠かせなくなりますし、日本語ドメインだったらどうするかといった問題はありますが。


たしかに日本語ドメインはどうするんでしょうね…


----------------
nao [seto@graffiti-web.org]

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops