« エラーオプションのメモ | メイン | レイアウト指向スクリプティング »
2007年9月 5日
[as3] リンケージにクラスを割り当てたときの注意点(2)
先のエントリーに引き続き。
ステージ上に配置したムービークリップのインスタンス名には
シンボル名をそのままインスタンス名に使うことが多々ある。
AS3ではリンケージの設定に「クラス」と「基本クラス」があって、
「クラス」の方には1つのクラスにつき、1つのシンボルにしか割り当てられない。
そのため、CustomButtonクラスのようなものを作って、複数のボタンの「クラス」に
同じクラスを割り当てようとすると、このクラスを継承したサブクラスをボタンの数だけ
用意しなければならなくなる。
そうした無駄にクラスが増えてしまうことを回避するために「基本クラス」を使う。
この「基本クラス」を使うときに僕がハマってしまったのが、「基本クラス」は
そのままクラスを割り当てればいいのだけれど、「クラス」の方はデフォルトでは
シンボル名が入るようになっている。
親切なことに、Flashはパブリッシュ時に、存在しないクラスを勝手に生成してくれるから
そのまま気にせず書き出しても普通は問題ない。
で、これをステージ上に配置して、インスタンス名をシンボル名と同じ名前に設定すると
たちまちコンパイルエラーが出てしまう。
しかも、このコンパイルエラーが曲者で、
実際エラーを起こす原因は、クラス名と同じ名前のインスタンスがステージ上に存在するから。
例えば「startButton」というシンボルを作成して、そこに
これをステージ上に配置して、当然のようにインスタンス名を「startButton」にする。
この状態で書き出すと上記のようなコンパイルエラーが発生する。
手っ取り早く回避するには「クラス」の定義名を「 シンボル名 + Class 」とかにすることかなあ。
ステージ上に配置したムービークリップのインスタンス名には
シンボル名をそのままインスタンス名に使うことが多々ある。
AS3ではリンケージの設定に「クラス」と「基本クラス」があって、
「クラス」の方には1つのクラスにつき、1つのシンボルにしか割り当てられない。
そのため、CustomButtonクラスのようなものを作って、複数のボタンの「クラス」に
同じクラスを割り当てようとすると、このクラスを継承したサブクラスをボタンの数だけ
用意しなければならなくなる。
そうした無駄にクラスが増えてしまうことを回避するために「基本クラス」を使う。
この「基本クラス」を使うときに僕がハマってしまったのが、「基本クラス」は
そのままクラスを割り当てればいいのだけれど、「クラス」の方はデフォルトでは
シンボル名が入るようになっている。
親切なことに、Flashはパブリッシュ時に、存在しないクラスを勝手に生成してくれるから
そのまま気にせず書き出しても普通は問題ない。
このクラスの定義がクラスパス内に見つからなかったため、 定義は書き出し時に SWF ファイル内に自動生成されます。って警告されるやつ。
で、これをステージ上に配置して、インスタンス名をシンボル名と同じ名前に設定すると
たちまちコンパイルエラーが出てしまう。
しかも、このコンパイルエラーが曲者で、
1046: 型が見つからないか、コンパイル時定数ではありません。と出力されるが、はじめはこのエラーが何を指しているのかがメチャクチャ分かりにくい。
実際エラーを起こす原因は、クラス名と同じ名前のインスタンスがステージ上に存在するから。
例えば「startButton」というシンボルを作成して、そこに
クラス : startButton 基本クラス : CustomButtonと設定した場合。(「クラス」にはデフォルトで入力されているシンボル名のまま)
これをステージ上に配置して、当然のようにインスタンス名を「startButton」にする。
この状態で書き出すと上記のようなコンパイルエラーが発生する。
手っ取り早く回避するには「クラス」の定義名を「 シンボル名 + Class 」とかにすることかなあ。
トラックバック(0)
このブログ記事を参照しているブログ一覧: リンケージにクラスを割り当てたときの注意点(2)
このブログ記事に対するトラックバックURL: http://system.seyself.com/mt-tb.cgi/440

コメントする