Я не на 100% отвечаю на ваш вопрос, но я предполагаю, что то, что вы запрашиваете, это способ вызова hitTestObject из любого одного экземпляра "ClassA" для всех экземпляров "ClassB", верно?Что-то вроде наличия объекта Bullet, проверяющего, попал ли он в какой-либо объект Player.
Если это действительно вопрос, то нет «глобального списка» всех экземпляров класса (о котором я знаю).Однако это не мешает вам делать это самостоятельно, используя статический вектор экземпляров класса.Будьте осторожны, так как это потребует немного большей очистки вашего кода, чем обычно.Вот краткий пример использования Bullets and Players.
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);
}
}
}
Это позволяет вам получить список всех созданных игроков.Вызов функции checkCollisionsWithPlayers для любого экземпляра Bullet проверит наличие попадания со всеми объектами Player, которые в данный момент созданы.
Однако это приведет к утечкам памяти, если вы не очистите неиспользуемые проигрыватели, вызвав функцию free () один раз.они больше не нужны (так как Вектор сохраняет ссылку на экземпляр, которая не позволяет сборщику мусора очистить память, не говоря уже о том, что он может возвращать ложные попадания мертвым игрокам).Просто будьте осторожны, если вы используете шаблон, подобный этому, для правильной очистки списка, поскольку он довольно подвержен ошибкам.