【问题标题】:Getting Error #1007: Instantiation attempted on a non-constructor出现错误 #1007:在非构造函数上尝试实例化
【发布时间】:2013-03-24 23:37:19
【问题描述】:

过去几天我一直在绞尽脑汁想弄清楚这一点:

我目前正在使用 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) 不是在 ID 上加 1,而是由于某种原因加了一个额外的数字到值。这意味着第 3 关返回“11”作为 ID 而不是 2,并且由于世界上只有 10 个关卡,显然没有 XML 文件需要解析。这是正常行为,还是奇怪的 AS3 错误?

标签: xml actionscript-3


【解决方案1】:

好吧,我看不到 GlobalVar 或 currentLevel 是什么,但从您的评论来看,它在末尾添加了一个数字,而不是添加 - 看起来 GlobalVar.currentLevel[1] 是一个字符串。因此,为了添加值,先转换为 int 或 Number,然后再执行操作。

【讨论】:

    猜你喜欢
    • 2011-08-12
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    相关资源
    最近更新 更多