書き物

技術とか作った物の話とか愚痴文句感想など

子から親へ選択的なデータアクセスを行うクラス構成

AS3 でゲームを作る場合に僕が良く使うクラス構成です。 [caption id=“attachment_2481” align=“alignnone” width=“605” caption=“コンテキストを用いたデータのやり取り図”]コンテキストを用いたデータのやり取り図[/caption] 各オブジェクトのメイン処理は各クラスの execute() で行います。 各クラスのデータのみ使用する処理の場合は特に特殊な考えは不要ですが、 例えばキャラクターオブジェクトの攻撃動作で炎オブジェクトを出現させたい場合、 自クラスのみでは解決出来ません。 そういう場合は、ctx によって公開されている親オブジェクトのメソッドに対し、 「炎を作って!」と依頼します。(↓みたいなイメージ) ctx.createFire(x, y); 親オブジェクトは各キャラクターと炎との当たり判定処理を行い、 当たり有りと判定した場合、炎の例えば hit(this) 等呼び出します。 炎クラスの hit() 内では ctx を介して ctx.damageCharacter(10); // キャラクターにダメージを与える ctx.removeFire(this); // 自分自信を消す 等実行します。 まぁつまり、キャラクターと炎のデータやり取りを親に任せることで、 オブジェクト同士のやり取りが自由になるわけです。 親は子のデータやり取りを選択的に開放しているので、 コードが無秩序ということもなく、ある程度ルールに基づいた実装が可能です。 (限度はありますが。)

些細な問題かもしれませんが、上記図の通り、 孫→親のデータアクセスのためには、子に親オブジェクトを持たさなければならなそうで、 これが気持ち悪く思っています。 どうにかならないものですかねぇ。