APEのGroup
- 2008 年 5月 22 日
APEがシュミレーションを行うには、グループをAPEngine.addGroupメソッドで設定します。
グループには、粒子や複合体等をメンバーとして登録し、メンバーはシュミレーションに基づいて表示されます。
Groupクラスは、グループに加えたメンバー同士、また他のグループとの衝突を判定します。
Particles、Constraints、Compositesをメンバーに含むことができます。
以下のサンプルは赤、緑、青でグループが分かれています。
サンプル
■Group(collideInternal:Boolean = false)
グループのインスタンスを作ります。
collideInternal:Boolean = グループに加えたメンバー同士の衝突を判定するか。trueだと衝突します。
・プロパティ
■collideInternal:Boolean
グループに加えたメンバー同士の衝突を判定するかどうか。trueだと衝突します。
■collisionList:Array
グループと衝突判定をするグループが格納されています。
・addCollidableで衝突判定を設定したグループが格納されます。
・AグループにaddCollidableでBグループを衝突判定した場合、AグループのcollisionListには、Bグループが格納されますが、BグループのcollisionListにAグループは格納されません。
■composites:Array
グループに追加した複合素材が格納されています。
・メソッド
■addCollidable(g:Group):void
引数のグループとの衝突判定を設定します。
g:Group = 衝突判定をするグループ。
・AグループにBグループとCグループとの衝突判定を設定するとします。この時、BグループとCグループは衝突判定されません。サンプルでは赤グループに緑、青グループを衝突判定し、緑グループに対して青グループを衝突判定しています。
■addCollidableList(list:Array):void
衝突判定をするグループをまとめて設定します。
list:Array = 衝突判定をするグループを格納した配列。
■addComposite(c:Composite):void
グループのメンバーに複合素材を加えます。
c:Composite = 追加する複合素材。
■cleanup():void
全てのグループメンバーのcleanupメソッドを実行します。
■init():void
全てのグループメンバーのinit()メソッドを実行します。
■getAll():Array
全てのグループメンバーを格納した配列を返します。
■paint():void
全てのグループメンバーのpaint()メソッドを実行します。
■removeCollidable(g:Group):void
引数のグループとの衝突判定を解除します。
g:Group = 衝突判定を解除するグループ。
■removeComposite(c:Composite):void
引数の複合素材をグループメンバーから外します。
c:Composite = グループメンバーから外す複合素材。
init()やpaint()がやたらに色々なクラスで出てきますが、APEngineクラスを先頭にしてツリー構造を辿って実行されていくようです。イベントとリスナーを使っていけばツリーの中間にinit()やpaintはいらないような気もしまして、この構造はAS2に近いようにも思ったり思わなかったり…。