« マンスリービルド | メイン | メニューをプラグイン化 »

2013年05月18日

吉里吉里Z 開発:: レイヤーとネイティブでのTJS2クラスの継承

    

吉里吉里2では、ネイティブで TJS2 クラスの継承は出来ない。
羽々斬で実験的にやってみたが、それほど難しくないので実装してもいいかもしれない。
基本的には、VM の InterCode~ クラスでやっているのと同じようなことを汎用化して、実装しやすくすればネイティブで任意クラスを継承したクラスを書ける。
KAG3 で、Layer クラスを継承した様々なクラスが書かれているが、いくつかのクラスをネイティブ化するなどある程度使い道がある。
ただ、Core ではなく、Plugin 側で出来るようになっていないと魅力減。

現在の Layer クラスは機能が多いので、分割整理する要望が上がっている。
大別すると位置等状態、イベント、画像データ実体、画像合成等加工処理の4つくらいか。
これは位置等状態+イベント、画像データ実体、画像合成等加工処理の3つに分割するのが妥当と考えているが、分割すると互換性が大きく失われる。
主要クラスである Layer が大きく変わってしまうのはあまり好ましくないと思っているのでどうしたものかと考えるわけだが、上述の継承が使えるのなら、ベースクラスを新設して、Layer クラスは互換性を維持する方針がとれる。
SuperLayer でも BaseLayer でもいいが、基底クラスを新設し、位置等状態+イベントをここに持たせ、画像データ実体(Bitmap or Image)、画像合成等加工処理(Canvas)の2つを担当するクラスを持つようにする。
SuperLayer を継承した Layer クラスを作り、互換性のためのメソッド等で Bitmap や Canvas へのアダプタとして機能するようにする。
このような構成にすれば、互換性は維持され、新規に作る場合は分割された構造を利用して拡張できる。
Core には Layer クラスを入れず Plugin 化されていた方が構成的にはすっきりする。
と、ここまで考えた段階で、Layer クラスはネイティブでなくても TJS2 で記述されていれば十分と気付いてネイティブ継承は自分の中で霧散した。
それよりも TJS2 to C++ を作った方がとも考えるが、それをやろうとしたらどっちみちネイティブ継承は必要になる。
TJS2 to Java を試作した限りでは、C++ へのトランスコードの方が楽に思えた。
JIT よりも作りやすいかもしれない。

可能性としてこのようなことを検討しているが、どうするかはまだ決めていない。



投稿者 Takenori : 2013年05月18日 20:25




comments powered by Disqus
Total : Today : Yesterday : なかのひと