私はあなたの質問に100%ではありませんが、あなたが求めているのは、 "Cla"のいずれかのインスタンスからhitTestObjectを呼び出す方法です「ClassB」のすべてのインスタンスで「ssA」と表示されますか?だから、BulletオブジェクトがPlayerオブジェクトに当たったかどうかをチェックするようなものです。
これが本当に問題であれば、(私が知っている)クラスのすべてのインスタンスの「グローバルリスト」はありません。しかし、それはあなたがクラスのインスタンスの静的ベクトルを使って自分自身をやることを止めるものではありません。ただし、これは通常よりもコードを少しきれいにする必要があるので注意してください。弾丸とプレイヤーを使用した簡単な例を示します。
class Bullet extends Sprite //or w/e it is your objects extend
{
public Bullet()
{
}
public function checkCollisionsWithPlayers() : void
{
for(var i : int = 0; i < Player.AllPlayers.length; ++i)
{
var player : Player = Player.AllPlayers[i];
if(this.hitTestObject(player))
{
trace("hit!");
}
}
}
}
class Player extends Sprite
{
static public const AllPlayers : Vector.<Player> = new Vector.<Player>();
public Player()
{
AllPlayers.push(this);
}
//remove unused Players from the AllPlayers list
public function free() : void
{
var index : int = AllPlayers.indexOf(this);
if(index >= 0)
{
AllPlayers.splice(index, 1);
}
}
}
これにより、作成されたすべてのプレーヤーのリストが表示されます。 Bulletの任意のインスタンスに対してcheckCollisionsWithPlayers関数を呼び出すと、現在インスタンス化されているすべてのPlayerオブジェクトでヒットがチェックされます。
しかし、free()関数を使用しなくなった後、Vectorがガベージを許可しないインスタンスで参照を保持しているため、未使用のプレーヤをクリーンアップしないとメモリリークが発生しますコレクターは、死んだプレーヤーに虚偽のヒットを返すかもしれないことは言うまでもなく、メモリを清掃する)。このようなパターンを使用すると、バグが発生しやすいので、リストをきれいにするには注意が必要です。
ありがとう!以前はベクトルを使ったことがなかったので、このコードは最初はやや鈍いものでしたが、これは私が必要としていたものです。将来はクラス外のインスタンスを参照できます。 –