我在循環中調用不同類型的類。對象可以是不同的類型,所以我使用getDefinitionByName
方法。這裏有一塊我的代碼:將子類轉換爲父變量as3
for(var y = 0; y < mapH; y++)
{
brickHolder[y] = new Array();
for(var x = 0; x < mapW; x++)
{
var classRef = getDefinitionByName('com.objects.Brick2') as Class;
var brick:Brick2 = Brick2(new classRef());
brick.name = x+""+y;
brick.getBall(ball);
brick.getEngine(this);
brick.x = x * brick.bWidth + brick.bWidth;
brick.y = y * brick.bHeight + 100;
numberOfBricks += 1;
addChild(brick);
}
}
唯一的問題是我必須將此對象轉換爲特定的變量:
var brick:Brick2 = Brick2(new classRef());
我想過使用一個接口和鑄造這樣的:
var brick:IBrick = IBrick(new classRef());
但是當我嘗試調用方法時出現錯誤。界面空白;沒有任何方法。我不確定這是否有所作爲。但是父類繼承了它,子類繼承了父類。我可以改爲使用父類嗎?
var brick:ParentBrick2 = ParentBrick2(new classRef());
概括地說,我能做些什麼,以鬆散投這些對象,所以我能夠使用任何方法,子類是被調用?
以及我試過的對象,我得到一個錯誤。但就像你說的,我不想使用它。我寧願保持面向對象。至於第二個建議。這是一個好主意,但它並不完全是我所期待的。父類完成大部分工作。如果有的話,我重寫父類的方法來做一些不同的事情。 – numerical25 2010-01-07 04:38:55