アニメーションライブラリのアルファ版を公開した。URLはこちら。
コアについては、高速化の為に恐ろしく気持ち悪いコードになっていて、publicやらinternalのvarが沢山ある。OOP狂信者からすると死刑レベルである。これは高速化の為にやむを得なくやっているわけであって、決してOOPよくわかりませ~ん。というわけではない。
カプセル化が美しいコードとよくいうが、カプセル化のために関数経由で変数を参照していたら日が暮れてしまうのだ。AVM2はそんなに速くはない。
そこで、ファクトリとなるクラスを導入して、コア実装部分はinternalクラスとして外部からは不可視とし、インターフェイスを経由して外部から操作できるようにしている。コア実装部分ではアニメーションマネージャとアニメーションオブジェクト同士が、密にpublicなvarを直接参照しあっているのだが、外部からはインターフェイスを経由してget/setでしか触れないようにしている。中が汚くても外には見せてはいけない。
クラス数はそこそこに多いのだが、外部から見えるのはインターフェイスばっかりで、コンクリートクラスは少ないと思う。拡張性に難があるのだが、プラグイン的な機構は用意しているし、増やしていこうと思う。直接コアを拡張したいなんてニーズは少ないと思うし。
当面としては、基本機能のテストをしながら、Tweenerと同じパッケージ名、同じクラス名のAPIを提供したいと思っている。SWCを差し替えるだけで高速化できるというだけで、かなりなニーズがあると思う。
0 件のコメント:
コメントを投稿