2012-08-02 243 views
0

我有這段代碼,我試圖加載一個JSON文件並解析它。但是,當我試圖用我做了一個類加載它(我可以加載圖像和聲音),它給了我這個錯誤:外部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)); 
     } 
    } 

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

{"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" 
} 
} 
+0

你可以發佈'Sheet1.json'的內容嗎?你如何提供這個文件? – Florent 2012-08-02 11:54:50

+0

我用內容編輯了文件,它現在只是作爲一個字符串來獲取它,但是不會給出錯誤。該錯誤是由IOError處理程序生成的。 – tversteeg 2012-08-02 12:04:48

+0

當您在瀏覽器中點擊「http:// 192.168.1.19/Sheet1.json」時會發生什麼? – Florent 2012-08-02 12:25:34

回答

0

在互聯網上經過一番研究,我發現這個問題,Flash用戶對圖像的默認加載器,聲音和SWF文件。您必須使用URLLoader來加載其他文件。我使用這個函數成功加載文本文件,LoaderEvent是一個自定義事件類,我用它來傳遞Strings:

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)); 
     } 
}