基本構造 - sipo/gipo GitHub Wiki

GearというクラスがGipoの機能を提供します。

他の多くのフレームワークでは、基本となるクラスが存在し、それを継承して機能使用するという方式を取ります。しかし、エディタの補完に多くの機能が出現するため煩雑になったり、複数のフレームワークを混ぜることが難しくなります。

そこで、GipoフレームワークではGearを継承せず、変数として持つという形を取っています。Gearを変数に持っているクラスをGearHolderと呼びます。この2インスタンスのセットをNodeと呼びます。

GearHolderはインターフェースを実装する必要がありますが、非常に単純な構造になっています。

GearHolder.hx

interface GearHolder
{
	/**
	 * 外部からのGear機能の呼び出し
	 */
	public function gearOutside():GearOutside;
}

単純な実装方法例がGearHolderImplにあります。

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);