getDefinitionByName()、定義されていないクラス名(ActionScript)

2009年2月21日 00:47

動的なクラス名で参照する場合に使うgetDefinitionByName。
例えば、こんな感じ。




クラス名が「Class1〜Class30」みたいに連番になっている場合。
ループ処理で参照したくなる。

ところが、そもそもgetDefinitionByNameとは、swf内で定義されていないクラス名を参照しようとすると・・・

『 ReferenceError: Error #1065: 変数 Class1 は定義されていません。
    at global/flash.utils::getDefinitionByName() 』

などと、怒られてしまう。

なんだ?と思いきや、結局リファレンスに書いてあるような

getDefinitionByName("flash.display.Sprite") as Class;

というのは、元々「flash.display.Sprite」が存在しているから、走るのです。

つまり、ActionScriptファイルであれば、しっかりとimportしてないもの、定義されてないものに関してはgetDefinitionByNameを使ったところで意味がなく、結局どこかでクラス名を定義しないといけないようです。

で、どう書くか・・・・?

こう書いたら動きました。なんか納得いかない!!




こんな書き方でいけるんだ。

Flash AS3 学習リスト

siteInformation

info@akibahideki.com

カテゴリ
Author
秋葉秀樹

秋葉秀樹(アキバヒデキ)

DTP上がりのデザイナー
ノンプログラマー!
フリーランスのデザイナー。
IllustratorやPhotoshopを初代バージョンから使っているという事がウリ。
クリエイター育成機関などでお世話になり、先生として講義をしていたりします。