Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   подгружаем и парсим JSON (http://www.flasher.ru/forum/showthread.php?t=183805)

Wadimir 01.09.2012 22:33

подгружаем и парсим JSON
 
Приветствую!
Пытаюсь подгрузить JSON но что то ничего не получается.
Начинаю так:
Код AS3:

 
[Embed(source="js.json", mimeType="application/octet-stream")]
public static const Json:Class;
 
public function load()
{
  var json:JSON = new Json() as JSON;
  trace(json);
 
}

но почему то выводит null.
JSON имеет вид:
PHP код:

{"frames": {

"anim":
{
    
"frame": {"x":0,"y":0,"w":74,"h":74},
    
"rotated"false,
    
"trimmed"false,
    
"spriteSourceSize": {"x":0,"y":0,"w":74,"h":74},
    
"sourceSize": {"w":74,"h":74}
}
}


Что я делаю не так и как достать потом frame ?

droopy 01.09.2012 23:32

По-моему вы делаете какую-то ерунду. Где вы взяли такой код?
[Embed(source="js.json", mimeType="application/octet-stream")]

Добавлено через 6 минут
если даже это работает, не лучше ли использовать
Код AS1/AS2:

private static const JSOn_TEXT:String =
{
a="a", b="b"
}


Gaen 01.09.2012 23:42

Код AS3:

var json:Object = JSON.parse(new Json() as String);


mihael_p 02.09.2012 01:01

Вложений: 1
Вы это имели ввиду?

Код AS3:

package 
{
        import com.adobe.serialization.json.JSON;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.net.URLLoader;
        import flash.net.URLRequest;
 
        /**
        * ...
        * @author Mihael Popov mihael@bk.ru
        */

        public class JSONtest extends Sprite
        {
                private var json:String ;
                private var loader:URLLoader = new URLLoader();
        private var request:URLRequest = new URLRequest();
 
                public function JSONtest():void
                {
                        json = "json.php";
                        request.url = json;
                        loader.addEventListener(Event.COMPLETE, start);
                        loader.load(request);
                }
 
                private function start(e:Event):void
                {
                        var loader:URLLoader = URLLoader(e.target);
                        var map:Object  = JSON.decode(loader.data);
                        var frames:Object = map.frames;
                        trace(frames.anim.frame.x + "  Х ");
                        trace(frames.anim.frame.y + "  Y ");
                        trace(frames.anim.frame.w + "  W ");
                        trace(frames.anim.frame.h + "  H ");
                        trace(frames.anim.frame.h + "  H ");
                        trace(frames.anim.rotated+ "  ROTATED ");
                        trace(frames.anim.trimmed+ "  TRIMED ");
                        trace(frames.anim.spriteSourceSize.x+ "  X in  spriteSourceSize");
                }
        }
 
}

при условии, что файл json.php лежит в той же папке, что и флешка и содержимое в нем такое:
PHP код:

{"frames": {"anim":{"frame": {"x":0,"y":0,"w":74,"h":74}, "rotated"false"trimmed"false"spriteSourceSize": {"x":0,"y":0,"w":74,"h":74}, "sourceSize": {"w":74,"h":74}}}} 

не забывайте про :
Код AS3:

import com.adobe.serialization.json.JSON;

и на всякий:

alatar 02.09.2012 04:25

Цитата:

Сообщение от Wadimir (Сообщение 1094590)
но почему то выводит null.

Потому что new Json() создаст ByteArray (ничего другого при mime-type application/octet-stream создать не получится), а не JSON (который вообще не может иметь экземпляров, т.к. статический). Можете из полученного ByteArray прочитать строку и распарсить ее при помощи JSON.

Wadimir 02.09.2012 15:01

Цитата:

Сообщение от droopy (Сообщение 1094592)
Где вы взяли такой код?
[Embed(source="js.json", mimeType="application/octet-stream")]
[/as]

А что вас здесь смущает?

Цитата:

Сообщение от mihael_p (Сообщение 1094600)
Вы это имели ввиду?

Нет

Цитата:

Сообщение от alatar (Сообщение 1094611)
Можете из полученного ByteArray прочитать строку и распарсить ее при помощи JSON.

Огромное спасибо!


Часовой пояс GMT +4, время: 03:14.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.