サイトトップ

Director Flash 書籍 業務内容 プロフィール

Macromedia Flash非公式テクニカルノート

Object.registerClass

ID: FN0307001 Product: Flash

Platform: All
Version: MX and above

シンタックス
Object.registerClass(シンボルID, クラス)

引数
シンボルID   ムービークリップシンボルのリンケージ識別子、または ActionScriptクラスのストリング識別子。

クラス   ActionScriptのコンストラクタ関数への参照。'null'を指定すると、シンボルの登録を削除します。

戻り値
クラスが正しく登録されると、true が返ります。そうでないときは、false が返されます。

説明
メソッド; ムービークリップシンボルを、ActionScriptのオブジェクトクラスに帰属させます。シンボルが存在しないと、Flashはストリング識別子とオブジェクトクラスとの間に帰属関係を設定します。

指定したムービークリップシンボルのインスタンスがタイムラインに配置されると、引数[クラス]で指定したクラスに登録され、MovieClipクラスには帰属しません。

指定したムービークリップシンボルのインスタンスが'attachMovie'または'duplicateMovieClip'メソッドで作成された場合も、 引数[クラス]で指定したクラスに登録され、MovieClipクラスには帰属しません。

[クラス]を'null'にすると、'Object.registerClass'は、指定したムービークリップシンボルまたはクラス識別子が帰属しているActionScriptクラスの定義を削除します。ムービークリップシンボルについては、すでに存在しているMovieClipのインスタンスは、そのまま変更がありません。けれど、シンボルの新たなインスタンスは、デフォルトのクラスであるMovieClipクラスに帰属します。

シンボルがすでにクラスに登録されていたら、'Object.registerClass'メソッドはそれを新規の登録で置換えます。

MovieClipインスタンスがタイムラインで配置されたり、'attachMovie'や'duplicateMovieClip'で作成されたとき、ActionScriptはコンストラクタを呼出し、'this'キーワードでオブジェクトを参照します。コンストラクタ関数は、引数なしで呼出されます。

'Object.registerClass'メソッドを使って、ムービークリップをMovieClip以外のActionScriptクラスに登録すると、そのムービークリップシンボルはビルトインMovieClipクラスのメソッドやプロパティ、イベントを継承しません。ただし、MovieClipクラスを新規クラスのプロトタイプチェーン内に含めた場合は、このかぎりではありません。以下のコードは、新規のActionScriptクラスであるtheClassに、MovieClipクラスのプロパティを継承させます。

theClass.prototype = new MovieClip();


以下のサンプルは、標準のチェックボックスUIウィジェットのコンポーネントを作成します。

まず、Check Boxという名前(訳者註: これはムービークリップのシンボルの名前です。スクリプトで使用するリンケージ識別子は、別途設定します)のムービークリップシンボルを、ライブラリに作成します。そして、CheckBoxクラスをActionScriptで作成して、このチェックボックスを帰属させます。

// CheckBoxクラスのコンストラクタ定義(すなわちクラス定義)
function CheckBox() {
  ...
}

// CheckBoxのプロトタイプチェーンにMovieClipを継承
CheckBox.prototype = new MovieClip();

// CheckBoxクラスのメソッドを定義
CheckBox.prototype.setLabel = function (newLabel) {
   this.label = newLabel;
   ...
};
CheckBox.prototype.setValue = function (newValue) {
   this.value = value;
   ...
};
CheckBox.prototype.getValue = function () {
   return this.value;
};
CheckBox.prototype.getLabel = function () {
   return this.label;
};

ここで、CheckBoxクラスにムービークリップシンボルCheck Boxを帰属させます。まず、ムービークリップシンボルCheck BoxをActionScriptで識別できるようにしておく必要があります。そのためには、ライブラリのリンケージダイアログボックスで識別子(訳者註: 記載はありませんが、"CheckBox"とするのでしょう)を入力して、「ActionScriptに書き出し」を選択します。

つぎに、ActionScriptを記述して、CheckBoxクラスにCheckBoxシンボルを帰属させます。

Object.registerClass("CheckBox" /*symbolID*/, CheckBox /*theClass*/ );

[訳者註] ステートメントをこのまま記述して「自動フォーマット」を行うと、エラーになります(「シンタックスチェック」では、エラーを返しません)。/*...*/は、コメントを意味しています。スクリプトとしては、このコメントを除いてつぎのように記述した方が、トラブルは少ないでしょう。

Object.registerClass("CheckBox", CheckBox);

使用例1(タイムラインへの配置): CheckBoxのインスタンスを、ステージにオーサリングツールで配置します。すると、ランタイムでは、インスタンスはActionScriptクラスCheckBoxを継承します。2つのインスタンス、myCheckBox1およびmyCheckBox2を配置すると、それぞれのメソッドを以下のように呼出して制御することができます。

myCheckBox1.setValue(true);
myCheckBox2.setValue(false);
myCheckBox2.setLabel("new label for #2");

使用例2(動的なインスタンスの作成): 'attachMovie'メソッドを使えば、ムービーの再生中にチェックボックスの新しいインスタンスをステージ上に作成することができます。CheckBoxシンボルはActionScriptのCheckBoxクラスに登録されているので、動的に生成された新規インスタンスは自動的にそのクラスを継承します。

// 補助用functionのcreateCheckBox
// CheckBoxを動的に作成
function createCheckBox(name, depth) {
   attachMovie("CheckBox", name, depth);
}
createCheckBox("myCheckBox3", 100);
myCheckBox3.setValue(false);
myCheckBox3.setLabel("new label for #3");

Player
Flash Player 6以降。

関連項目
MovieClip.attachMovie  MovieClip.duplicateMovieClip

出典
ActionScript Dictionary(ActionScript辞書英文改訂版)より邦訳。

_____

作成者: 野中文雄
作成日: 2003年7月12日


Copyright © 2001-2006 Fumio Nonaka.  All rights reserved.