вывод списка друзей (vkontakte.ru)

вывод списка друзей (vkontakte.ru)

Открываем adobe Flash и создаем новый Файл Flash(ActionScript3).

Нажимаем Ctrl+F7 и из появившегося окна на сцену тащим: List и UILoader.

Должно получиться примерно так:

Создаем MovieClip, на котором, к примеру, написанно "подождите" и называем его mc_press и ставим галочку на Экспорт для AS3

Жмём F9 и в появившемся окне пишем:

1) Переменные и импорт

import vk.*;//импорт библиотеки(в исходнике)
 
//переменные для VkApi
var wrapper:Object;
var api:VkApiNode;
var api_id:Number=111111;//ID вашего приложения
var api_secret:String="2222222";//секрет вашего приложения
var server_url:String;
var viewer_id:Number;
var query:String;
var api_XML:XML = new XML();
var api_loader:URLLoader = new URLLoader();
var api_request:URLRequest;
 
//мувики
var Loading:MovieClip = new mc_press();
 
//массив друзей
var FriensList:Array = new Array();

2) Главная часть

this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
function onAddedToStage(e:Event):void {
 wrapper = Object(this.parent.parent);
 Security.allowDomain("*");
 stage.dispatchEvent(new Event(Event.DEACTIVATE));
 stage.dispatchEvent(new Event(Event.ACTIVATE));
 server_url = wrapper.application.parameters.api_url + '?';//определяем адресс сервера
 viewer_id = wrapper.application.parameters.viewer_id;//узнаем id просматривающего приложение
 api = new VkApiNode(viewer_id,api_id,api_secret, false, "XML", "2.0", server_url);//делаем копию библиотеки
 if (wrapper.application.parameters.is_app_user == 1) {//если пользователь установил приложение
 if(!Boolean(wrapper.application.parameters.api_settings & 2))//если есть нет доступа к друзьям
 {
 AppSettings();//вызывам окно с настройкими
 }else{
 PUSK();//продолжаем запуск приложения
 }
 }else{
 AppInstal();//вызывам окно с добавлнием на страницу
 }
}
 
function AppSettings():void
{
 wrapper.external.showSettingsBox(+2);//автоматически вызываем окно настроек приложения
}
function onApplicationAdded(e:Object):void
{
 if(!Boolean(wrapper.application.parameters.api_settings & 2))
 {
 AppSettings();//автоматически вызываем окно с добавлнием на страницу
 }else{
 PUSK();//продолжаем запуск приложения
 }
}
 
function onSettingsChanged(e:Object):void
{
 if(!Boolean(e.settings & 2))
 {
 PUSK();//продолжаем запуск приложения
 wrapper.removeEventListener("onSettingsChanged", onSettingsChanged );//удаляем слушатель
 }
}
 
function AppInstal():void
{
 wrapper.external.showInstallBox();//автоматически вызываем окно добавления приложения на страницу
}
 
function PUSK():void
{
 Loading.x = wrapper.application.stageWidth /2;//выравниваем
 Loading.y = wrapper.application.stageHeight /2;
 addChild(Loading);//добавляем на сцену окошко с зугрузкой
 query = api.getFriends();//создаем ссылку с помошью библиотеки
 api_request=new URLRequest(query);//загружаем данные с ссылки
 api_loader.addEventListener(Event.COMPLETE, onloadedPUSK);//что произойдет при завершении загрузки
 api_loader.load(api_request);//загружаем
 FriendsPanel.addEventListener(Event.CHANGE, onFrendAva);//добавляем к списку друзей слушатель, который сработает когда пользователь изменит положение бегунка на нем
}
function onloadedPUSK(e:Event):void
{
 api_loader.removeEventListener(Event.COMPLETE, onloadedPUSK);//удаляем старый слушатель
 api_XML = XML(api_loader.data);//сохраняем данные в переменную
 if(api_XML.children().length() > 100)//если друзей более 100
 {
 cutListFriend();//вызваем функцию для загрузки больших списков друзей
 }else{
 removeChild(Loading);//удаляем окно загрузки
 for (var i:int=0; i<api_XML.children().length();i++)//запускаем цикл
 {
 FriensList[i] = api_XML.children()[i].toString();//пихаем id друзей в массив
 }
 query = api.getProfiles(FriensList, ['first_name,last_name']);//создаем ссылку с помошью библиотеки
 api_request=new URLRequest(query);//загружаем данные с ссылки
 api_loader.addEventListener(Event.COMPLETE, onloadedFriens);//что произойдет при завершении загрузки
 api_loader.load(api_request);//загружаем
 }
}
function cutListFriend():void
{
 var FriendsN:Number = 0;//обьявляем перемнную "счетчик"
 for(var i:int=0; i<api_XML.children().length();i++)//запускаем цикл
 {
 FriendsN += 1;//ставим счетчик
 FriensList[i] = api_XML.children()[i].toString();//пихаем друга в массив
 if(FriendsN == 100)//когда счетчик дощел до 100
 {
 FriendsN = 0;//обнуляем его
 query = api.getProfiles(FriensList, ['first_name,last_name']);//создаем ссылку с помошью библиотеки
 api_request=new URLRequest(query);//загружаем данные с ссылки
 api_loader.addEventListener(Event.COMPLETE, onloadedFriens);//что произойдет при завершении загрузки
 api_loader.load(api_request);//загружаем
 FriensList = new Array();//чистим массив
 }else if((api_XML.children().length() - i) == 1)//если счетчик не дошел до 100, но друзей осталось меньше 100
 {
 FriendsN = 0;//обнуляем счетчик
 query = api.getProfiles(FriensList, ['first_name,last_name']);//создаем ссылку с помошью библиотеки
 api_request=new URLRequest(query);//загружаем данные с ссылки
 api_loader.addEventListener(Event.COMPLETE, onloadedFriens);//что произойдет при завершении загрузки
 api_loader.load(api_request);//загружаем
 }
 }
 removeChild(Loading);//удаляем окно загрузки
}
function onloadedFriens(e:Event):void
{
 api_loader.removeEventListener(Event.COMPLETE, onloadedFriens);//удаляем старый слушатель
 api_XML = XML(api_loader.data);
 for (var i:int=0; i<api_XML.children().length();i++)//запускаем цикл
 {
 FriendsPanel.addItem({label:api_XML.children()[i].first_name + " " + api_XML.children()[i].last_name, d&#097;ta:api_XML.children()[i].uid});//добавляем в лист на сцене пункт
 }
}
function onFrendAva(e:Event):void
{
//загружаем аватар друга, которого выбрали из списка
 query = api.getProfiles([e.target.selectedItem.data], ['photo_big']);
 api_request=new URLRequest(query);
 api_loader.addEventListener(Event.COMPLETE, onloadedFriendAva);
 api_loader.load(api_request);
}
function onloadedFriendAva(e:Event):void
{
 api_XML = XML(api_loader.data);
 FriendAva.source = api_XML..photo_big.toString();//показываем аватар
 
}

Нажимаем Ctrl+Enter и загружаем приложение в контакт.

Приложение включено и видно всем

С использованием контейнера (Можно и Без отступов и элементов управления)

Можно добавлять на страницу

Тип приложения Flash

Исходник: 

Похожие записи

Комментарии

Аватар пользователя maxic

Поправте пожалуйста архив

Аватар пользователя lewka151

Исходник можно скачать отсюда:  https://easyflash.ifolder.ru/18220652">https://easyflash.ifolder.ru/18220652

Аватар пользователя Newred

Спасиба мегоПолезный материал, всё работает, красота!

такого урока ещё нету нигде в рунете)

Аватар пользователя lilrom

Зачем Евгения Блана  выделил ????

Аватар пользователя Валрера

Здраствуйте, ответьте мне пожалуйста на вопрос. Я создал рисовалку для Вконаткте
https://vkontakte.ru/app1841627_57289685
Как мне сделать что бы там был виден список моих друзей, что бы когда нажимаешь на друга то при отправление рисунка графити отправлялось ему? Как сделать что бы я мог отправлять уведомления со своего приложения? Мне вот сказали почитай это (ПРо уведомления) https://vkontakte.ru/pages.php?id=2371037
Но я не пойму, куда вставлять этот код??? Куда набирать текст для уведомлений?
Пожалуйста, админ, не удаляй это собщение!!!! Мне очень надо!!!! Ответьте в лс!!! Пожалуйста!!!

Programmer Action Script 3.0

Аватар пользователя lewka151

этот метод должен отправляться с сервера. это уже PHP  а не AS3.

почитай это https://flapps.ru/forum/topic255.html

Аватар пользователя Новичок в AS3

у меня не работае пишет что ошибка в в строке FriendsPanel.addItem({label:api_XML.children()[i].first_name + " " + api_XML.children()[i].last_name, d&#097;ta:api_XML.children()[i].uid});//добавляем в лист на сцене пункт

Почему вроде все правиль но сделал

help

Аватар пользователя dr_novator

Здраствуйе, у меня работает, только интересуєт несколько вопросов:
1. Откуда брал библиотеку?
2. В Parameter.as какая то ошибка,
        
this.value = this.value.replace(/"/g, '\"'); 
this.value = this.value.replace(/'/g, '\'');

каким должно бить регулярное виражение?
Спасибо

Аватар пользователя komar

Странно но у меня почему то не работает хотя я все и сделал как было сказано выше

scratch

Аватар пользователя dnf69

Не смог открыть основной файл. Пишет - "Непредвиденный формат файла".
В какой версии сделан файл?

Аватар пользователя komar

скорее всего в adobe flash cs4

народ что за лаги!!!

smiles

объяснитеhttps://www.photoshare.ru/photo6426532.html

Аватар пользователя sonick

У меня компилятор ругается на строчки:

var api:VkApiNode;
.
.
api = new VkApiNode(viewer_id,api_id,api_secret, false, "XML", "2.0", server_url);//делаем копию библиотеки
и т.д.

Что ето за КЛАСС(VkApiNode)???

Аватар пользователя komar

sonick,
Вы что действительно хотите что то написать для вконтакте и не знаете что это за класс???

mda

вам сюда www.vkontakte.ru/club1 скачайте архив с классами оттуда и как следует просмотрите документацию

Аватар пользователя Fly

1) Админ всегда прав
2) Если админ не прав, смотри пункт 1

Мы в контакте - https://vkontakte.ru/club9573247
Не отвечаю на вопросы в личку касаемо Flash, у нас для этого есть форум

Аватар пользователя palamarin

Уважаемый Lewka151! Я так понимаю что урок для тех у кого меньше 100 друзей. Потому что в массив после 100-го друга обнуляете. И все, а если друзей допустим 186 то первая сотня идет пустыми ячейками (запятыми). И естественно сервер не понимает и ругается.

 

Аватар пользователя LeonidSb

Норм. Ещё не знал, спасибо!

Аватар пользователя yTko_svd

Видимо что-то изменилось и уже не работает =(

Аватар пользователя lewka151

palamarinздесь неограниченное количество друзей. как видишь он отправляет запросы по 100друзей.