0
我一直令人頭大我的腦袋在過去幾天試圖找出這一個:得到錯誤#1007:實例化嘗試在非構造
我目前正在使用Flashpunk水平基礎的遊戲。我處理水平的方法是簡單地傳遞一個OGMO編輯器文件(它基本上只是用不同的擴展名的XML文件)的陣列,像這樣:
public static var worldOneList:Array = new Array(LEVEL_WORLD_1_1, LEVEL_WORLD_1_2,etc..);
public static var worldTwoList:Array = new Array(LEVEL_WORLD_1_1, LEVEL_WORLD_1_2,etc..);
public static var worldLists:Array = new Array(worldOneList,worldTwoList,etc...);
,然後調用它的一類處理地圖的形式創建和電平邏輯:
public static function toLevel(worldID:int, levelID:int):void
{
FP.world = new LevelBase(worldLists[worldID][levelID]);
}
我可以通過電平選擇屏幕訪問水平就好了,但是在完成一個級別,並選擇前進到下一個,我拋出:
Error #1007: Instantiation attempted on a non-constructor.
隨着堆棧指針的頂部(在FP):
public static function getXML(file:Class):XML
{
var bytes:ByteArray = new file;
return XML(bytes.readUTFBytes(bytes.length));
}
奇怪的是,前兩個層次會去就好了,然後在第三和任何在此之後,它會扔了錯誤。
這是我用來更改級別代碼:
if (GlobalVar.currentLevel[1] != GlobalVar.maxLevelsInSet)
{
LevelLists.toLevel(GlobalVar.currentLevel[0], GlobalVar.currentLevel[1] + 1);
}
和代碼讀取ogmo文件(LevelBase.as):
public function LevelBase(levelFile:Class)
{
levelData = FP.getXML(levelFile); //Parse the .oel file and give data to levelData
我猜我做一些非常簡單的錯誤?任何幫助,將不勝感激。乾杯:)
所以我想通了什麼是錯的:原來我通過水平(GlobalVar.currentLevel [1] + 1)推進的方法是不加1到ID,但由於某種原因增加了一個額外的數字值。這意味着第三級返回「11」作爲ID而不是2,並且由於世界上只有10級,顯然沒有XML文件可以解析。這是正常的行爲,還是一個奇怪的AS3錯誤? – CoreyRalli 2013-03-24 14:20:54