我有这个代码,我试图加载一个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"
}
}
答案 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));
}
}