【发布时间】:2013-12-09 21:47:26
【问题描述】:
我有一个由 adobe flash CS6 spritesheet 生成器生成的 spritesheet 的 json。当我尝试阅读时,我得到了这个字符串:“ÿþ{”
JSON 看起来像这样:
{"frames": {
"buttons instance 10000":
{
"frame": {"x":0,"y":0,"w":60,"h":48},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":60,"h":48},
"sourceSize": {"w":60,"h":48}
},
"buttons instance 10001":
{
"frame": {"x":60,"y":0,"w":60,"h":48},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":60,"h":48},
"sourceSize": {"w":60,"h":48}
},
"buttons instance 10002":
{
"frame": {"x":120,"y":0,"w":60,"h":48},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":60,"h":48},
"sourceSize": {"w":60,"h":48}
},
"buttons instance 10003":
{
"frame": {"x":180,"y":0,"w":60,"h":48},
"rotated": false,
"trimmed": false,
"spriteSourceSize": {"x":0,"y":0,"w":60,"h":48},
"sourceSize": {"w":60,"h":48}
}},
"meta": {
"app": "Adobe Flash CS6",
"version": "12.0.0.481",
"image": "panel_animations.png",
"format": "RGBA8888",
"size": {"w":1024,"h":2048},
"scale": "1"
}
}
这就是我尝试读取文件的方式:
protected function load(event:MouseEvent):void
{
file = new File();
file.addEventListener(Event.SELECT, file_select);
file.browseForOpen("Please select a file...", [new FileFilter("JSON", "*.json")]);
}
protected function file_select(event:Event):void
{
selectedFile = event.currentTarget as File;
stream = new FileStream();
//stream.open(file, FileMode.READ);
stream.addEventListener(Event.COMPLETE, doTrace);
stream.openAsync(selectedFile, FileMode.READ);
}
private function doTrace(e:Event):void
{
trace(stream.readUTFBytes(stream.bytesAvailable));
}
最后,跟踪结果为“ÿþ{”,并且 stream.bytesAvailable=0。如果我尝试解析它,当然会得到错误 #1132: Invalid JSON parse input。
感谢任何帮助。
莫克斯
【问题讨论】:
-
我在 FlashDevelop 中创建了一个新的 AIR 项目,然后将发布的 json 粘贴到一个新的文本文件中,使用您的代码读取它没有问题。你的json文件一定有问题。您是否尝试过创建一个新的?
-
是的,生成的 json 文件是问题所在。将其内容复制粘贴到另一个 json 中解决了这个问题。谢谢你的洞察力:)
标签: json actionscript-3 air utf