クラスについての補足説明

●クラスとは何か?
・「クラス」は、生成されるオブジェクトの特徴を定義したもの。
・「クラス」を具体化したもの(=オブジェクト)を「インスタンス」と呼ぶ。
・「クラス」に定義する性質には「プロパティ」と「メソッド」がある。
・「プロパティ」はクラス自身の属性である。クラスに関連づけられた変数。
・「メソッド」は処理内容をまとめたもの。クラスに関連づけられた関数。

「初めから用意されているクラス」(ビルトインクラス:コアクラス、flashパッケージのクラス、flパッケージのクラス)

「自分で作るクラス」(カスタムクラス)がある。

●カスタムクラス

ユーザが独自に定義するクラス

・定義をFLAファイル内に含めない

●カスタムクラスの作り方

基本的には、プロパティ(変数)とメソッド(関数)を定義する

ただし、メソッドには、「コンストラクタ」と呼ばれる特殊なメソッドがある。
コンストラクタでは、クラス名をメソッド名とする。
コンストラクタは、クラスのインスタンス(オブジェクト)を生成すると同時に、初期化処理を行う。

そうした定義が記述された「クラス定義ファイル」を作成する。

●クラス定義ファイル

Flashを用いて作成する場合は、[ファイル]→[新規]→[新規ドキュメント]→[ActionScript(AS)ファイル]で作成。
※ファイルの拡張子は「.as」となる。

※Flashを用いなくても一般的なテキストエディタ(xyzzy、メモ帳、テキストエディット)などでも作成可能。

①クラス名を決める
②新規クラス定義ファイルを作成し、FLAファイルと同じフォルダに「クラス名.as」という名前で保存する。
③packageステートメントとclassステートメントを使い、次のようなクラス定義の骨組みを記述する。
そして、classステートメント内にプロパティ、コンストラクタ、メソッドの定義を行う。

package {

 public class クラス名{

 ]
}

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

package {
 public class クラス名{
 //プロパティ
 var プロパティ名:データ型;
 …
 …
  //コンストラクタ定義
  function クラス名(){

  }

 
  function メソッド名(){

  }
 }
}

●パッケージ (package)
「パッケージ」はクラスを分類するためのフォルダ(ディレクトリ)。

・コアクラス
トップレベルのクラスであり、AS以外の言語でも使われる汎用性の高いクラスがあらかじめ登録されている。

・flashパッケージのクラス
flashパッケージには、flash特有の機能を含むクラスが含まれる。

・flパッケージのクラス
「コンポーネント」などAdobe社がAS3.0を作成したカスタムクラス

●クラスのインポート
クラス定義ファイル内では、データ型の指定やnew演算子によるインスタンス(オブジェクト)の生成時などで暮らす名を指定する場合、あらかじめそのクラスをインポートしておく必要がある (トップレベルのクラスはインポートの必要はない)。

import クラス名;

クラス名は、パッケージを含む「完全修飾名」である必要がある。

例)
import flash.display.MovieClip;

import flash.display.*;

●プロパティ、メソッドのアクセス制限
プロパティやメソッドには、外部からアクセスしてほしくないものもある。
アクセス制限をするためのキーワードとして、次のものがある。

public : 自由にアクセス可能
internal  : 同じパッケージ内のみアクセス可能
protected : 定義したクラスとそのクラスのサブクラスのみアクセス可能
private : 定義したクラスからのみアクセス可能

※ 何もキーワードをつけない場合は、internalの設定が適用される。
※ コンストラクタはpublic以外の指定はできない。

●ドキュメントクラス
・カスタムクラスの一種。
・SWFにおけるメインのクラスとして使用される。
・ドキュメントクラスを使用することで、タイムラインにスクリプトを記述することなく、スクリプトをすべて外部化できる。
・基本的にはSpriteかMovieClipを拡張する。

 

●打ち込んで実行してみよう。

・サンプルコード1

ドキュメントクラス(Example2)

クラス定義ファイル名:Example.as

 

・サンプルコード2

ドキュメントクラス(Example3)

クラス定義ファイル名:Example3.as

クラス(ball)

クラス定義ファイル名:Ball.as