在过去的几天里,我一直在绞尽脑汁试图弄清楚这一点:
我目前正在使用 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
我猜我在做一些非常简单的错误?任何帮助,将不胜感激。干杯:)