AS3.0 получить список групп

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
Аватара пользователя
Kavis
Сообщения: 33
Зарегистрирован: 02 сен 2012, 11:10

AS3.0 получить список групп

Сообщение Kavis »

Пытаюсь вывести список групп
никаких ошибок при получении списка не происходит,
в вернувшемся массиве количество элементов data.length равно 26
а вот сами id групп я так и не получил, что могу делать не так ?
Вот часть кода

Код: Выделить всё

 // если произошла ошибкаfunction onError(data: Object):void {   //SendMessageUp(data.error_msg);   txt1.text=data.error_msg;}var grCount; // количество группvar grCount_prev; //предыдущее количество  aList2.addEventListener(Event.CHANGE, showData2);// выполняем запрос получения списка группgrCount_prev=100;//нужно для вызываемой функцииVK.api('groups.get', {extended:"1", count:100}, groupsLoaded, onError);// данные полученыfunction groupsLoaded(data: Object):void { grCount = data.length;  // узнаем количество групп//txt1.text=grCount; for (var i=0; i<grCount; i++) {     aList2.addItem({label:data[i].name, data:data[i].gid});             }//Если вернулось сто групп, то похоже есть еще группы, делаем новый запросif (grCount==100) {setTimeout(groups_get, 10);}} function groups_get():void {VK.api('groups.get', {extended:1, count:100, offset:grCount_prev }, groupsLoaded, onError);grCount_prev+=grCount;}
gpv123
Сообщения: 346
Зарегистрирован: 29 янв 2012, 20:57

Re: AS3.0 получисть список групп

Сообщение gpv123 »

Код: Выделить всё

function groupsLoaded(data:Array):void{    grCount = data.length - 1;  // узнаем количество групп        //txt1.text=grCount;        for (var i = 1; i < grCount + 1; i++)    {        aList2.addItem({label:data[i].name, data:data[i].gid});    }        // Если есть еще группы, то делаем запрос снова    if (data[0] > grCount_prev) setTimeout(groups_get, 10);}

Код: Выделить всё

function groups_get():void{    VK.api('groups.get', {extended:1, count:1000, offset:grCount_prev}, groupsLoaded, onError);    grCount_prev += grCount;}
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: AS3.0 получисть список групп

Сообщение sanych_dv »

Привыкайте пользовать Timer вместо setTimeout, который фактически использует субкласс SetIntervalTimer класса Timer.
Psijic
Сообщения: 4
Зарегистрирован: 18 сен 2012, 13:13

Re: AS3.0 получисть список групп

Сообщение Psijic »

тоже не смог разобрать что приходит в группах. В любом случае, там не просто object.name, а более сложная структура.

Вот что мне посоветовали

Можно быстро проверить какие ключи и значения находятся в объекте с помощью

Код: Выделить всё

trace(JSON.encode(object));
Но у меня такой команды не нашлось, я использовал

Код: Выделить всё

JSON.stringify(object);
- на тестовом классе все ок, но я использую wrapper, а контакт не пропускает JSON с ним. Поэтому надо использовать API напрямую (я никогда не использовал так). Поэтому как получится - напиши, какие там пути для данных и как подключать API напрямую заодно (в оф. руководстве написано вроде, надо подключать библиотеку через flashDevelop)

Если что, структура данных там такая:

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?><response> <groups_get list="true">  <item>44</item>  <item>   <gid>2992</gid>   <name>F ▪ R ▪ I ▪ E ▪ N ▪ D ▪ S</name>   <screen_name>tvfriends</screen_name>   <is_closed>1</is_closed>   <type>group</type>   <photo>http://vk.com/images/community_50.gif</photo>   <photo_medium>http://vk.com/images/community_100.gif</photo_medium>   <photo_big>http://vk.com/images/question_a.gif</photo_big>  </item>
Аватара пользователя
Kavis
Сообщения: 33
Зарегистрирован: 02 сен 2012, 11:10

Re: AS3.0 получисть список групп

Сообщение Kavis »

gpv123, дал нормальный код, рабочий)),
вот только мне его все равно пришлось не много изменить если брать по 100 групп из потока, то выводится только сто почему-то
я на скорую руку сделал так

Код: Выделить всё

//постинг в группы var grCount; // количество группvar grCount_prev; //предыдущее количество  cl_frame4.aList2.addEventListener(Event.CHANGE, showData2);// выполняем запрос получения списка группgrCount_prev=100;//нужно для вызываемой функцииVK.api('groups.get', {extended:1, count:100}, groupsLoaded, onError);// данные полученыfunction groupsLoaded(data:Array):void{   grCount = data.length - 1;  // узнаем количество групп      for (var i = 1; i < grCount + 1; i++)    {        cl_frame4.aList2.addItem({label:data[i].name, data:data[i].gid});    }    // Если есть еще группы, то делаем запрос снова    if (data.length > 99) setTimeout(groups_get, 200);} function groups_get():void {VK.api('groups.get', {extended:1, count:100, offset:grCount_prev }, groupsLoaded, onError);grCount_prev+=grCount;} function showData2(event:Event):void {VK.api('wall.post', {owner_id:'-'+event.target.selectedItem.data, message:post_message, attachments:id_upload_photo+'}, wallPostSuccess2, onError);} function wallPostSuccess2(data: Object):void {   SendMessageUp('отправлено');}//end постинг в группы
gpv123
Сообщения: 346
Зарегистрирован: 29 янв 2012, 20:57

Re: AS3.0 получисть список групп

Сообщение gpv123 »

Код: Выделить всё

// Если есть еще группы, то делаем запрос сноваif (data.length > 99) setTimeout(groups_get, 200);
В data[0] вк передает общее кол-во групп, так почему бы не сделать

Код: Выделить всё

// Если есть еще группы, то делаем запрос сноваif (data[0] > grCount_prev) setTimeout(groups_get, 200);
Аватара пользователя
Kavis
Сообщения: 33
Зарегистрирован: 02 сен 2012, 11:10

Re: AS3.0 получить список групп

Сообщение Kavis »

Буду пробовать размышлять и записывать суть логики

grCount_prev у меня равно 100

data[0] тоже равно 100 она никак не может быть больше grCount_prev, цикл сразу рвется

даже гипотетически , если перейти на следующий цикл запроса
при условии что групп более 100
то в data[0] снова будет 100 в grCount_prev будет уже 200


кстати запросы делаю на всякий случай, так как друзей не получалось получить полным запросом, здесь действую по аналогии, может у меня инет хиленький и не может нормально получать по 1000
gpv123
Сообщения: 346
Зарегистрирован: 29 янв 2012, 20:57

Re: AS3.0 получить список групп

Сообщение gpv123 »

Kavis писал(а):data[0] тоже равно 100 она никак не может быть больше grCount_prev, цикл сразу рвется
Извиняюсь, я просто в документации немного запутался.

По поводу запросов: лучше использовать execute, т.к. он позволяет сделать до 25 запросов API (т.е. можно вернуть до 25000 групп за один запрос)
Ответить