AS3访问未定义的属性错误

时间:2013-02-12 20:41:32

标签: actionscript-3 flash

我有代码读取JSON文件以导入我正在制作的游戏中的关卡级别的信息。代码运行并编译正常,直到每次我尝试构建时,FlashDevelop开始错误地“构建失败”而没有实际给出错误。

我通过mxmlc编译器运行代码,给我一条错误消息,并在行中返回错误“错误:访问未定义属性JSON”:

var level:Object = JSON.decode(json);

这很令人困惑,因为JSON库明显包含在文件的顶部,“import com.adobe.serialization.json.JSON;”,并且这个错误开始完全发生在它自己的身上,这很奇怪......

package
{
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.utils.ByteArray;
import net.flashpunk.Entity;
import com.adobe.serialization.json.JSON;

public class LevelParser
{
    public static function GetLevelByID(ID:int, source:Class):Level
    {
        // Store new entity
        var populated:Vector.<Entity> = new Vector.<Entity>();

        // Parse file into string
        var bytes:ByteArray = new source();
        var json:String = bytes.readUTFBytes(bytes.length);
        var level:Object = JSON.decode(json);

        // Find correct level
                    ...

编辑:奇怪的是如果我注释掉该行来调用它,并且这个函数,代码在mxmlc中编译得很好,但在Flashdevelop中说“构建失败”没有错误

1 个答案:

答案 0 :(得分:1)

这实际上是一个参考错误。

从AS3 SDK 4.5开始,JSON成为SDK中的本机类。在以前的版本中,您必须下载adobe序列化类才能访问JSON - 这可能是您的问题。

使用mxmlc时,它将使用sdk flex-config.xml中指定的所有包含的库进行编译。在FlashDevelop中,它只使用您包含的类。

解决方案:将adobe序列化类添加到项目中