我對你的問題不是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會保留對不允許垃圾的實例的引用收集器清理記憶,不要提及它可能會對死亡玩家返回虛假命中)。如果您使用像這樣的模式來正確清理列表,請注意,因爲它非常容易出錯。
非常感謝!這個代碼起初很笨拙,因爲我以前從未使用過載體,但這正是我所需要的,現在我可以在將來的課外參考實例。 –