所以我有這個超類的網格類和一個名爲GrassTile1,GrassTile2等的網格類的子類...所有子類的實例都存儲在一個數組中。我想如何將子類的實例轉換爲引用該數組的超類?如何將子類的實例轉換爲其超類?
private var backgroundGrid = []; //the array which the grids are stored in, in the main class.
public class Grid extends MovieClip
{
protected var node :PathfindNode; //the variable I wish to access, from an instance of subclass.
public function Grid(){
node = new PathfindNode();
}
}
public class GrassTile1 extends Grid { //every subclass of Grid will extends Grid
public function GrassTile1() {
// constructor code
}
}
function getBackgroundGrid(i:int,j:int):Grid{ //in the main class
return Grid(backgroundGrid[i][j]); // this line gives me an error
}
類型錯誤:錯誤#1034:類型強制失敗:無法轉換GrassTile1 @ 2905d5f1網格。
我試過訪問backgroundGrid [i] [j] .node和其他方法來解決,我可以想到和失敗。任何想法?
我建立了一個簡單的.fla文件,並設置了這個文件,因爲我假設你基於你所說的做了什麼,而且我沒有錯誤。 – prototypical
查看我更新的答案。如果你在構造函數中拋出一個跟蹤來確保你期望發生的事情實際上正在發生,那將會很好。我不需要叫超級,它對我來說工作得很好。 – prototypical