Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Работа с ВКонтактовским APIConnection через метод api (http://www.flasher.ru/forum/showthread.php?t=175697)

s3dworld 22.02.2012 14:20

Работа с ВКонтактовским APIConnection через метод api
 
Всем доброго дня!

Скачал APIConnection с ВКонтакта. Решил получить список друзей пользователя, у которых установлена игра:

Код AS3:

vkAPI.api("friends.getAppUsers",null,OnSuccess,OnError);
 
// ...
 
public function OnSuccess(_object:Object):void
{
        var array:Array=_object as Array;
        var friends:Vector.<uint>=new Vector.<uint>();
        var length=array.length;
 
        for(var i:uint=0;i<length;i++) friends.push(uint(array[i]));
}
 
public function OnError(_object:Object):void
{
        funSend(new GetFriendsAppError());
}

Это работает. А вот решил получить информацию о пользователях:

Код AS3:

var object:Object=new Object();
var ids:String=_users[0].toString();
 
for(var i:uint=1;i<_users.length;i++) ids+=","+_users[i].toString();
 
object["uids"]=ids;
object["fields"]="photo_rec";
 
vkAPI.api("users.get",object,OnSuccess,OnError);

Срабатывает OnSuccess. Но я не понимаю как из Object получить параметры друзей. Не понимаю как они там хранятся, как извлекать. Сейчас сделал вот так:

Код AS3:

public function OnSuccess(_object:Object):void
{
        var array:Array=_object as Array;
        var users:Vector.<UserDesc>=new Vector.<UserDesc>();
        var length=array.length;
 
        for(var i:uint=0;i<length;i++)
        {
                var object:Object=array[i];
                users.push(new UserDesc(uint(object["uid"]),null,String(object["photo_rec"])));
        }
}

Но данный код стопорит проигрыватель. Как правильно извлекать? Раньше я работал с сервером ВКонтакте через XML (то есть сам делал запрос и получал XML в ответ). А тут ведь всё лежит в Object. И не понимаю как там это лежит и как докопаться до каждого пользователя и каждого элемента.

И ещё, а можно ли как-то локально тестировать игру? То есть вот мне приходится каждый раз компилировать и заливать на сервер чтобы запускать из ВКонтакта. А это очень не удобно, так как нет отладки. А если запускать локально, то я не могу взаимодействовать с API ВКонтакте. Можно ли как-то это настроить? Процесс разработки ускорился бы.

olexandr 22.02.2012 19:13

разве, в доках нету примеров этого объекта?
что мешает пропарсить весь объект и посмотреть самому?

Код AS3:

                for (var i:String in _obj)
                    trace(i + ": " + _obj[i]);

или вот такой код используется в моем логгере:

Код AS3:

        public static function logObject(obj:Object, withType:Boolean = false):void {
            recoursiveTrace(obj, withType, 0);
        }
 
 
        private static function recoursiveTrace(obj:Object, withType:Boolean, level:int):void {
            var _indent:String = '';
            for (var i:int = 0; i < level; i++)
                _indent += '  ';
 
            var _type:String = obj is Array ? 'arr' : 'obj';
            var _constructor:String = '';
 
            for (var _name:Object in obj) {
                if (withType) {
                    _constructor = obj[_name].constructor;
                    _constructor = ' [' + _constructor.split(' ')[1]
                }
 
                log(_type + ':' + level, _indent + _name + ': ' + obj[_name] + _constructor);
 
                if ((typeof obj[_name]) === 'object')
                    recoursiveTrace(obj[_name], withType, level + 1);
            }
        }


s3dworld 22.02.2012 19:46

olexandr
С первым вопросом я разобрался. А вот локально как работать? У меня не получилось.

Rzer 22.02.2012 21:49

открываешь страничку с игрой, копируешь из приложения flashVars, подсовываешь их APIConnection


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

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