Вот набросал вам функцию на AS которая будет загружать сколь угодно пользователей.
Код: Выделить всё
function usersLoad(params:Object = null):void { if (!params) params = arguments[0]; var currentTime:int = new Date().time; if (!params.step) { params.step = 0; params.reTime = currentTime; } else { var diffTime:int = currentTime - params.reTime; if (diffTime < 500) { params.reTime = 0; setTimeout(usersLoad, 500-diffTime, params); return; } else { params.reTime = currentTime; } } var uids:Array = params.uids; var step:int = params.step; var start:int = step * 1000; var end:int = (start + 1000 >= uids.length)?uids.length:start + 1000; var currentuids:String = ''; if (!params.users) params.users = new Array(); for (var i:int = start; i < end; i++) { currentuids += uids[i] + ','; } VK.api("users.get", { uids:currentuids, fields:"photo" }, function(o:Object):void { params.users = params.users.concat(o as Array); if (end >= uids.length) { params.onComplete(params.users); return; } params.step++; usersLoad(params); }, params.onError);}
В функцию надо передать объект, с параметрами:
uids:Array - массив с идентификаторами пользователей,
onComplete:Function - функция которая будет вызвана, по завершении работы, в нее будет передан массив содержащий всех пользователей (такой же как и возвращается методом "users.get")
onError:Function - функция которая будет вызвана в случае ошибки. Эта функция передается в метод ВК, то есть должна принимать объект, как и функции передающиеся в VK.api()
Пример:
Код: Выделить всё
//Все как обычноvar flashVars:Object = stage.loaderInfo.parameters as Object;var VK:APIConnection = new APIConnection(flashVars); //Массив с идентификаторами пользователей, теоретически идентификаторов может быть сколь угодно.var userids:Array = [1232334, 564435435, 54786548375, 4564756746, 3463746374]; //Вызываем нашу функциюusersLoad({uids:userids, onComplete:loadedUsers, onError:loadingError}); //Определяем функции обработчикиfunction loadedUsers(users:Array):void { //Массив users будет содержать данные пользователей. trace(users[0].first_name);//Для примера выведем имя первого} function loadingError(error:Object) { //Функция обработки ошибки, ее вызывает метод APIConnection trace("Возникла ошибка");}
P.S. Никакой гарантии 100%-й безотказности не даю. Я попробовал получить данные на 5000 пользователей отработала успешно. Если будет работать без проблем - хорошо, а если где-то вылезут артефакты доработаете сами, направление куда копать я вам дал. Ну и смотрите еще, что, функция всвязи с ограничениями вконтакте делает 2 запроса к API в секунду, можно было сделать 3, но я оставил 1 как резерв, так что если у вас например 10.000 пользователей, рассчитывайте, что данные на них будут грузиться не менее 5 секунд.