基本構造 - sipo/gipo GitHub Wiki
GearというクラスがGipoの機能を提供します。
他の多くのフレームワークでは、基本となるクラスが存在し、それを継承して機能使用するという方式を取ります。しかし、エディタの補完に多くの機能が出現するため煩雑になったり、複数のフレームワークを混ぜることが難しくなります。
そこで、GipoフレームワークではGearを継承せず、変数として持つという形を取っています。Gearを変数に持っているクラスをGearHolderと呼びます。この2インスタンスのセットをNodeと呼びます。
GearHolderはインターフェースを実装する必要がありますが、非常に単純な構造になっています。
interface GearHolder
{
/**
* 外部からのGear機能の呼び出し
*/
public function gearOutside():GearOutside;
}
単純な実装方法例がGearHolderImplにあります。
class GearHolderImpl implements GearHolder
{
/* ギア。構造制御インスタンス */
private var gear:Gear;
/** コンストラクタでギアを生成する */
public function new()
{
gear = new Gear(this);
}
/**
* 外部からのGear機能の呼び出し
*/
public function gearOutside():GearOutside
{
return gear;
}
}
GearHolderを実装するのに最も簡単な方法は、GearHolderImplを継承することです。基本的にはそうしてください。
多重継承の問題などがあり、どうしてもGearHolderImplを継承できない場合には、似たコードを記述しGearHolderを実装することで代用が可能です。
木構造
Nodeはそれぞれ親子関係を作ります。
木構造は全ての状態を表現できませんが、人間の脳には優しい構造です。
addChildメソッドを使って子を登録します
gear.addChild(child);
removeChildメソッドを使って子を削除します。
gear.removeChild(child);
**removeされた子は再利用できません。**これは、再利用による変数のミスなどを防ぐためです。子を削除せずに非表示にする、子を作り直すなどをしてください。
トップレベルのNodeの起動方法
基本的に子は親に追加された直後に自動的に起動しますが、トップレベルのNodeは親が居ないため任意のタイミングでinitializeTopメソッドを呼び出す必要があります。
top.gearOutside().initializeTop(null);