我不知道导致错误的原因。我确定它非常明显。 (见下面的评论)。
package src.tilespack{
public static var tiles:Array = [];
public static var floorTile:Tile = new FloorTile(0); //Causes an error in FloorTile Class
public var bitmapData:BitmapData;
public function Tile(bitmapData:BitmapData, ID:int)
{
this.ID = ID;
tiles[ID] = this;
this.bitmapData = bitmapData;
}
}
瓷砖:
package src.tilespack{
import src.gfx.Assets;
import src.tilespack.Tile;
public class FloorTile extends Tile{ //Error here
public function FloorTile(ID:int){
super(Assets.floorTileData, ID);
}
}
}
FloorTile:
match '/articles' => 'articles#index', :via => [:get], :as => :articles
错误#1009:无法访问null对象的属性或方法 参考
答案 0 :(得分:0)
我注意到您的代码中出现了一些问题:
1)文件 Tile 没有类的定义。可能这只是一个错字,但无论如何,这个文件看起来应该是这样的:
package src.tilespack
{
public class Tile
{
public static var tiles:Array = [];
public static var floorTile:Tile = new FloorTile(0); //Causes an error in FloorTile Class
public var ID:int;
public var bitmapData:BitmapData;
public function Tile(bitmapData:BitmapData, ID:int)
{
this.ID = ID;
tiles[ID] = this;
this.bitmapData = bitmapData;
}
}
}
2)你的代码有类似“递归链接”的东西(抱歉,我不知道官方用语)。您的 Tile 类具有静态变量 floorTile ,并尝试创建 FloorTile 类的实例,该类本身扩展了类瓦片强>
所以我们有一种情况,当类 Tile 尝试使用类 FloorTile (因为静态变量应该在第一个类使用期间实例化),以及类 FloorTile 尝试使用平铺类。这是一个问题。
您可以删除 FloorTile 类型的静态变量,也可以更改 Tile 类的代码,以防止在 FloorTile 类之前使用class Tile 准备工作了。这是第二种方法的一个例子:
package src.tilespack
{
import flash.display.BitmapData;
public class Tile
{
public static var tiles:Array = [];
private static var _floorTile:Tile;
public static function get floorTile():Tile
{
if (!Tile._floorTile)
{
Tile._floorTile = new FloorTile(0);
}
return Tile._floorTile;
}
public var ID:int;
public var bitmapData:BitmapData;
public function Tile(bitmapData:BitmapData, ID:int)
{
this.ID = ID;
tiles[ID] = this;
this.bitmapData = bitmapData;
}
}
}