たとえば、ジェネリッククラスWall
を作成し、ライブラリシンボルがそれを基本クラスに使用するようにします。この継承を機能させるために、実行時に ActionScript を使用してそれらを作成する必要はありません。ムービークリップをステージに配置するだけでかまいません。
次に行う必要があるのは、これらの壁をどこかに保管することです。あなたは ActionScript に不慣れで、新しいレベルのコードを書くことを避けたいので、manager タイプ クラスを使用してこのプロセスを自動化できます。このクラスを呼び出すと、次のWallManager
ようになります。
public class WallManager
{
private static var _walls:Vector.<Wall> = new <Wall>[];
internal static function register(wall:Wall):void
{
_walls.push(wall);
}
public static function reset():void
{
_walls = new <Wall>[];
}
public static function get walls():Vector.<Wall>{ return _walls; }
}
Wall
次に、クラスを作成します。このクラスのコンストラクター内で、自動的に Wall 自体をWallManager
リストに追加します。
public class Wall extends Sprite
{
public function Wall()
{
WallManager.register(this);
}
public function touchingMouse(mouseX:int, mouseY:int):Boolean
{
// For this example I am checking for collisions with the
// mouse pointer. Replace this function with your own collision
// logic for whatever it is that is supposed to collide with
// these walls.
if(parent === null) return false;
var bounds:Rectangle = getBounds(parent);
return bounds.contains(mouseX, mouseY);
}
}
このセットアップは「ベスト プラクティス」ではありませんが、プロジェクトが小さく、単独で作業しているように見え、シンプルで仕事が完了するため、状況に適しています。
各レベルの終わりにWallManager.reset()
、前のレベルから壁を取り除くために使用します。すべての壁の衝突をチェックするには、次のようなループを使用します。
for each(var i:Wall in WallManager.walls)
{
var collision:Boolean = i.touchingMouse(mouseX, mouseY);
if(collision)
{
// There was a collision.
//
//
}
}