AS3のparentが何故MovieClipではないのかが少しわかった
今から3ヶ月ほど前、漸くAS3を勉強し始めた頃にこんなエントリーを書いた。
「parentの扱い」
内容は「AS3ではparent.gotoAndPlay()が出来ない、なぜならparentはMovieClipではなくDisplayObjectContainerだから」という具合で、その解決策とかを載せていた。そして最後に「でもなぜparentがDisplayObjectContainerなのか今の理解じゃあわからんなあ~」と締めくくっていた。
そして、3ヶ月。なんとなくわかってきた!(気がする)
要するにOOP的なものがいまいち理解できてなかったのだ(今でも怪しいが)。なんとなく概念は読み囓ったものの、実際のクラス設計で継承やインターフェイスの使い方を知らなかった(今でもインターフェイスは全然使ってなかったりだけど)。ポリフォーリズムなんて本当にうわべだけだったと思う。
いまなら、なぜparentがDisplayObjectContainerなのかは表示リストの概念からそれなりに理解できる(でも神髄を掴んでいるかと言えばそうではない)。SpriteにaddChilde()したらparent.gotoAndPlay()はどう考えても無茶しすぎだろうと肌で感じる事が出来る。
そんなわけで、この仕様が至極まっとうな物であることに漸く気づくに至った。
ここら辺のOOPに対する理解の難しさや、誤解を含んだ理解はAS1→AS2→AS3とプログラミングの極北の様な道を純粋に突き進んできたからかもしれない。そろそろ別の道を覗いてみようと思う。
けどAS3で抽象基本クラスってどうやって定義してるんだろう。ビルトインクラスだけか?