Как прочитать вложенный файл JSON, созданный с помощью упаковщика текстур, с помощью jQuery? - PullRequest
1 голос
/ 20 февраля 2012

Как я могу прочитать следующий вложенный json-файл глубокого уровня, используя jQuery?

{
 "frames": {

"a1-0.png":
{
    "frame": {"x":24,"y":20,"w":12,"h":12},
    "rotated": false,
    "trimmed": true,
    "spriteSourceSize": {"x":50,"y":152,"w":12,"h":12},
    "sourceSize": {"w":256,"h":192}
},
"a1-1.png":
{
    "frame": {"x":0,"y":194,"w":32,"h":44},
    "rotated": false,
    "trimmed": true,
    "spriteSourceSize": {"x":39,"y":121,"w":32,"h":44},
    "sourceSize": {"w":256,"h":192}
},
"a1-2.png":
{
    "frame": {"x":400,"y":194,"w":60,"h":112},
    "rotated": false,
    "trimmed": true,
    "spriteSourceSize": {"x":60,"y":51,"w":60,"h":112},
    "sourceSize": {"w":256,"h":192}
    }
 }
}

Следующие строки кода jQuery, которые я использую для чтения этого.Но это не работает.Кто-нибудь может мне помочь, как прочитать все эти элементы?

Здесь " a1-0.png " нельзя изменить, потому что в спрайт-листе более 400 изображений.И этот файл JSON представляет этот спрайт лист.Это было сделано с использованием программного обеспечения под названием texture-packer .

jQuery код здесь:

<button id="FrameNumber">Frame Number</button>
<div id="results"></div>

<script>
$(document).ready(function(e) {
var url="sprite/bounce.json";
     $("#FrameNumber").click(function(){
         $.getJSON(url,function(result){
       $("#results").append('<p>'+result+'</p>');
    });
    });
});
</script>

1 Ответ

1 голос
/ 22 февраля 2012

Просто используйте data.frames ["name"] для получения данных:

$(document).ready(function(e) {
    var url="test.json";

     $("#FrameNumber").click(function(){

         $.getJSON(url,function(data) {
             var f = data.frames["a1-0.png"];
             $("#results").append('<p>x='+f.frame.x+' y='+f.frame.y+'</p>');
            });
    });
});

Выбранный здесь формат оптимизирован для запроса данных кадра.Если вы хотите перебрать все кадры, используйте формат массива json в TexturePacker.В этом случае имя фрейма является частью данных фрейма, а не ключом.

...