Platform: All
Version: Flash 9 and above
シンタックス
import packageName.className
import packageName.*
パラメータ
packageName:* - 別個のクラスファイルで定義されたパッケージ名。
className:Class - 別個のクラスファイルで定義されたクラス名。
説明
外部に定義されたクラスやパッケージを、コード中で利用可能にします。たとえば、flash.display.Spriteクラスをスクリプト中で使用したいときは、そのクラスをインポートしなければなりません[*1]。この要件は、以前のバージョンのActionScriptとは異なります。以前のバージョンでは、import指示子(ディレクティブとも呼びます)は使用しないことも可能でした。
import指示子を使用した後は、完全なクラス名を使ってパッケージ名まで含めることも、クラス名だけを用いることもできます。
import flash.display.Sprite;
// クラス名のみ
var mySprite:Sprite = new Sprite();
// 完全なクラス名
var mySprite:flash.display.Sprite = new flash.display.Sprite();
|
パッケージ内に参照したい複数のクラスがある場合には、つぎの例のようにそれらすべてのクラスを1ステートメントでインポートすることができます[*2]。
import指示子は、指定したパッケージのトップレベルに存在するクラスや関数、変数のみをインポートすることができます。パッケージ内に入れ子になったパッケージは、別途明示的にインポートしなければなりません。
クラスをインポートしながらスクリプトで使用しなかった場合、そのクラスはSWFファイルの中には書出されません。つまり、大きなパッケージをインポートしても、SWFファイルのサイズは気にせずに済みます。クラスに関わるバイトコードがSWFファイルに含まれるのは、そのクラスが実際に使われたときだけだからです。不要なクラスをインポートした場合にひとつ問題なのは、名前の重複する可能性が増えることです。
なお、import宣言をフレームアクションで行った場合、そのフレームだけでなく、タイムライン全体に対して効果が及びます[*3]。
[訳者注*1] たとえば、ActionScript 3.0クラス定義で、以下のようにimportステートメントを記述せず、完全修飾名によりクラスにアクセスすると、ReferenceErrorが発生します。
// ActionScript 3.0クラス定義ファイル: Test.as
package {
// import flash.display.Sprite
public class Test {
function Test() {
trace(flash.display.Sprite); // ReferenceError
}
}
}
|
他方で、Flashムービー内からimportステートメントも完全なクラス名も使用せず、単なるクラス名のみで参照しても、とくにエラーは生じません。
// Flashムービー(SWF)
// フレームアクション
trace(Sprite); // Output: [class Sprite]
|
これは、Flashのタイムラインには、デフォルトで必要なクラスが自動的にimportされるためです。インポートされるクラスは、Adobe Flash CS3アプリケーションフォルダ内のConfigration/ActionScript 3.0/implicitImports.xmlに記述されています。
図■implicitImports.xmlの内容
[訳者注*2] akihiro kamijo「package」によれば、"*"を使うより「一つ一つ指定した方が性能的には良い結果になるよう」だということです。
[訳者注*3] 原文は「import指示子は、それを呼出した現行のスクリプト(フレームまたはオブジェクト)に対してのみ適用されます」("The import directive applies only to the current script (frame or object) in which it's called.")としています。しかし、これはActionScript 2.0についての説明です。ActionScript 3.0では、import宣言のほか、変数のvar宣言や関数のfunction定義は、タイムライン全体に対して初期化が行われます。
|
Player
ActionScript 3.0/Flash Player 9以降。
出典
[ActionScript 3.0 Language Reference] > [Statements, Keywords & Directives] > [import directive]
_____
作成者: 野中文雄
更新日: 2008年3月12日 Flash SC3のドキュメントを確認のうえ、細部を修正および補足。
作成日: 2006年7月15日