所以我有这个超类的网格类和一个名为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