ダイナミックなクラス for AS2.0!! dybanuc class を考える
聞きますね、ダイナミッククラス!調べました。
Object や MovieClip のインスタンス、あるいはクラス自身に対しては、[ActionScript2.0] 書き出しでも、自由にプロパティやクラスを追加できるのが、ダイナミッククラス。カスタムクラスの定義でも、ダイナミックの設定が可能。普通のクラスの定義より考えましょう。
MyObject.as
class MyObject { }
main.as
var obj:MovieClip = new MyObject(); obj.name = "kanai"; // コンパイルエラー obj.kanpai = function () { // コンパイルエラー trace("乾杯はビッグマン!"); };
出力パネルでは、エラーメッセージが表示されます。通常のクラスでは、宣言されていないプロパティやメソッドにアクセス、追加などはできません。
この場合では、name という名前のプロパティはありません、kanpai という名前のプロパティはありません。と出ます。
そこで、
class ステーメントの先頭に dynamic と記述するだけで ダイナミッククラスに化けます。
MyObject.as
dynamic class MyObject { }
main.as
var obj:MovieClip = new MyObject(); obj.name = "kanai"; // エラーなし obj.kanpai = function () { // エラーなし trace("乾杯はビッグマン!"); };
dynamic 指定したクラスのインスタンスには、もとのクラスに定義されていないプロパティやメソッドの追加が可能になります。当然、ダイナミッククラスを継承したサブクラスもダイナミッククラスとなるのです。
MySubObject.as
class MySubObject extends MyObject { }
親がダイナミックなら子もダイナミック、しかし人間はそうではありません。親がハゲていても、努力次第では遺伝なんて何のその!
幸い、私のおやっさんはハゲていませんが、母の父がピカピカだったので、あああああああぁああ〜〜
そうか、今日からあなたダイナミック!