2013-03-24 72 views
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 

我猜我做一些非常簡單的錯誤?任何幫助,將不勝感激。乾杯:)

+0

所以我想通了什麼是錯的:原來我通過水平(GlobalVar.currentLevel [1] + 1)推進的方法是不加1到ID,但由於某種原因增加了一個額外的數字值。這意味着第三級返回「11」作爲ID而不是2,並且由於世界上只有10級,顯然沒有XML文件可以解析。這是正常的行爲,還是一個奇怪的AS3錯誤? – CoreyRalli 2013-03-24 14:20:54

回答

0

嗯,我看不到什麼GlobalVar是,或currentLevel,但從你的評論是在最後增加一個數字,而不是添加 - 它看起來像是GlobalVar.currentLevel [1]是一個字符串。所以,爲了增加值,首先強制轉換爲int或Number,而不是操作。