外部JSON文件是未知类型

时间:2012-08-02 11:25:47

标签: json actionscript-3

我有这个代码,我试图加载一个JSON文件并解析它。但是当我尝试用我制作的类加载它时(我可以加载图像和声音)它给了我这个错误:

Error #2124: Loaded file is an unknown type. URL: http://192.168.1.19/Sheet1.json

这是我用来加载它的函数,我该怎么做才能让Flash识别文件类型?

    public function LoadString(path:String) {
        var stringLoader:flash.display.Loader = new flash.display.Loader();
        stringLoader.contentLoaderInfo.addEventListener(LoaderEvent.COMPLETE, loadStringComplete);
        stringLoader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpError,false,0,true);
        stringLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, error, false, 0 ,true);
        stringLoader.load(new URLRequest(path));
    }

    private function loadStringComplete(e:Event) {
        try {
            dispatchEvent(new LoaderEvent(LoaderEvent.STRING_LOADED,0,0,e.target.data,true));
        } catch (error:*) {
            dispatchEvent(new LoaderEvent(LoaderEvent.ERROR,0,0,"Error: "+ error.toString(),true));
        }
    }

使用Flash CS6中的新Spritesheet方法生成JSON文件的内容。

{"frames": {

"Front AA0000":
{
    "frame": {"x":0,"y":0,"w":12,"h":13},
    "rotated": false,
    "trimmed": false,
    "spriteSourceSize": {"x":0,"y":0,"w":12,"h":13},
    "sourceSize": {"w":12,"h":13}
},
"Rot AA0000":
{
    "frame": {"x":12,"y":0,"w":14,"h":6},
    "rotated": false,
    "trimmed": true,
    "spriteSourceSize": {"x":14,"y":8,"w":32,"h":14},
    "sourceSize": {"w":32,"h":14}
},
"Rot AA0001":
{
    "frame": {"x":0,"y":13,"w":20,"h":8},
    "rotated": false,
    "trimmed": true,
    "spriteSourceSize": {"x":9,"y":6,"w":32,"h":14},
    "sourceSize": {"w":32,"h":14}
},
"Rot AA0002":
{
    "frame": {"x":0,"y":21,"w":28,"h":8},
    "rotated": false,
    "trimmed": true,
    "spriteSourceSize": {"x":4,"y":6,"w":32,"h":14},
    "sourceSize": {"w":32,"h":14}
},
"Rot AA0003":
{
    "frame": {"x":0,"y":29,"w":24,"h":8},
    "rotated": false,
    "trimmed": true,
    "spriteSourceSize": {"x":4,"y":6,"w":32,"h":14},
    "sourceSize": {"w":32,"h":14}
},
"Rot AA0004":
{
    "frame": {"x":0,"y":37,"w":28,"h":11},
    "rotated": false,
    "trimmed": true,
    "spriteSourceSize": {"x":0,"y":3,"w":32,"h":14},
    "sourceSize": {"w":32,"h":14}
},
"Rot AA0005":
{
    "frame": {"x":0,"y":48,"w":28,"h":14},
    "rotated": false,
    "trimmed": true,
    "spriteSourceSize": {"x":0,"y":0,"w":32,"h":14},
    "sourceSize": {"w":32,"h":14}
}},
"meta": {
    "app": "Adobe Flash CS6",
    "version": "12.0.0.481",
    "image": "Rocket AA 8-Bit.png",
    "format": "RGB8",
    "size": {"w":32,"h":64},
    "scale": "1"
}
}

1 个答案:

答案 0 :(得分:0)

在互联网上进行一些研究后我发现了问题,Flash用户是图像,声音和swf文件的默认加载器。您必须使用URLLoader来加载其他文件。我使用此函数成功加载文本文件,LoaderEvent是我用它传递字符串的自定义Event类:

public function LoadString(path:String) {
        var stringLoader:URLLoader = new URLLoader(new URLRequest(path));
        stringLoader.addEventListener(LoaderEvent.COMPLETE, loadStringComplete);
        stringLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpError,false,0,true);
        stringLoader.addEventListener(IOErrorEvent.IO_ERROR, error, false, 0 ,true);
}

private function loadStringComplete(e:Event) {
        try {
            dispatchEvent(new LoaderEvent(LoaderEvent.STRING_LOADED,0,0,e.target.data,true));
        } catch (error:*) {
            dispatchEvent(new LoaderEvent(LoaderEvent.ERROR,0,0,"Error: "+ error.toString(),true));
        }
}