ВКонтакте API 3.0. Пример простого приложения

Только готовые уроки по использованию ВКонтакте API. Flash + PHP + API. НЕ IFrame!
Robert
Сообщения: 4
Зарегистрирован: 23 окт 2011, 23:04

Re: ВКонтакте API 3.0. Пример простого приложения

Сообщение Robert »

Спасибо большое. Примерные размеры подогнал. Было бы замечательно, если получилось применительно к этому коду, в этих же координатах привязать к аватарки рамку. Пробовал с graphics.beginFill(0xFFFFFF); но ничего не получилось. Буду благодарен если подскажите примером.
Аватара пользователя
Умри
Сообщения: 22
Зарегистрирован: 16 сен 2011, 07:04

Re: ВКонтакте API 3.0. Пример простого приложения

Сообщение Умри »

Robert писал(а):Спасибо большое. Примерные размеры подогнал. Было бы замечательно, если получилось применительно к этому коду, в этих же координатах привязать к аватарки рамку. Пробовал с graphics.beginFill(0xFFFFFF); но ничего не получилось. Буду благодарен если подскажите примером.
Вот ооочень простая рамка :)

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

var x:int=100; //координаты фоткиvar y:int=100;var w:int=100; //размеры фоткиvar h:int=50;var ots:int=5; //отступ рамки от фоткиvar ramka:Shape = new Shape(); //в этом шейпе будем рамку рисоватьavatar.move(x,y);avatar.scaleContent = true;avatar.setSize(w,h);ramka.graphics.lineStyle(2, 0x990000, .75); //задаём стиль рамкиramka.graphics.drawRect(x-ots, y-ots, w+ots*2, h+ots*2); //рисуем рамкуstage.addChild(avatar); //всё готово, можно показывать :) stage.addChild(ramka);
Robert
Сообщения: 4
Зарегистрирован: 23 окт 2011, 23:04

Re: ВКонтакте API 3.0. Пример простого приложения

Сообщение Robert »

Умри писал(а): Вот ооочень простая рамка :)
Ого! Ничего себе "ооочень простая рамка" =) Супер! Скажите Ваш вебмани wmr кошель - отблагодарю за помощь. Или аську / скайп для связи. Рамка отличная, проблема только в том, что ширина отступа не фиксируется. Отступ с права и слева - одинаковый, но большой. С самим фото та же проблема ширину не могу зафиксировать. Вот пример:

Изображение

Пробовал в коде менять значение w+ots*2 ничего не вышло. Вот полностью весь код с координатами фото. Посмотрите пожалуйста может получится его откорректировать к требуемым значениям.

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

// выводим аватарку пользователяavatar.autoLoad = true;         avatar.source = response..photo_big;            var x:int=250; //координаты фоткиvar y:int=142;var w:int=167; //размеры фоткиvar h:int=135;var ots:int=5; //отступ рамки от фоткиvar ramka:Shape = new Shape(); //в этом шейпе будем рамку рисоватьavatar.move(x,y);avatar.scaleContent = true;avatar.setSize(w,h);ramka.graphics.lineStyle(2, 0x990000, .75); //задаём стиль рамкиramka.graphics.drawRect(x-ots, y-ots, w+ots*2, h+ots*2); //рисуем рамкуstage.addChild(avatar); //всё готово, можно показывать :)stage.addChild(ramka);}
Аватара пользователя
Умри
Сообщения: 22
Зарегистрирован: 16 сен 2011, 07:04

Re: ВКонтакте API 3.0. Пример простого приложения

Сообщение Умри »

Robert писал(а): Ого! Ничего себе "ооочень простая рамка" =) Супер! Скажите Ваш вебмани wmr кошель - отблагодарю за помощь. Или аську / скайп для связи. Рамка отличная, проблема только в том, что ширина отступа не фиксируется. Отступ с права и слева - одинаковый, но большой. С самим фото та же проблема ширину не могу зафиксировать. Вот пример:
Пробовал в коде менять значение w+ots*2 ничего не вышло. Вот полностью весь код с координатами фото. Посмотрите пожалуйста может получится его откорректировать к требуемым значениям.
Ну ты, видимо, просто задаёшь размер объекта avatar больше, чем размер фотки. И получается, что фотка по центру его отображается. А рамка окружает объект именно, а не саму фотку :)
Можно так сделать:

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

avatar.maintainAspectRatio=false;
Тогда фотка будет растягиваться без сохранения пропорций, ей можно будет любой размер задать.
Robert
Сообщения: 4
Зарегистрирован: 23 окт 2011, 23:04

Re: ВКонтакте API 3.0. Пример простого приложения

Сообщение Robert »

Умри писал(а):Ну ты, видимо, просто задаёшь размер объекта avatar больше, чем размер фотки. И получается, что фотка по центру его отображается. А рамка окружает объект именно, а не саму фотку :) Можно так сделать: Тогда фотка будет растягиваться без сохранения пропорций, ей можно будет любой размер задать.
Вау клева! Вот то, чего и хотелось добиться. Спасибо! Возникла подобная проблема с рамкой и выводом в ней имени, фамилии и даты рождения. Код из Main.as первого топика этой темы. Вот, что мы имеем:

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

name_tf.text = response..first_name + ' ' + response..last_name;// выводим имя и фамилию пользователяname_tf.wordWrap = true;//добавил. но возможно и не надо если имя и дата будут по центруname_tf.textColor = 0xffffff;//добавил цвет. хорошо бы шрифт прописать и его размерname_tf.x = 285;name_tf.y = 285;addChild(name_tf); var bdate = response..bdate;// выводим дату рождения пользователяbdate_tf.text = bdate;bdate_tf.textColor = 0xffffff;bdate_tf.x = 285;bdate_tf.y = 285;addChild(bdate_tf);
В идеале хотелось бы вокруг имени, фамилии и даты рождения нарисовать рамку типа как у вас в примере выше, но с фоном внутри. Проблема только в том, что имя, фамилия в контакте у всех разной длины + еще дата рождения у кого-то есть, а у кого-то её нет - соответственно статическая рамка не пойдет - потому, что текст иногда будет вылазить за её пределы. Но в коде выше для фото вы использовали "растяжку без сохранения пропорций". Может быть с рамкой для имени и даты, а также фоном в ней - тоже так получится. Только будет растягиваться сама рамка под текст. Я сам попытался но у меня получилась только статическая рамка. Прошу прощения за нубо-код.

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

var nameramkaTextField:TextField = new TextField(); // делаем рамку для имени и даты рожденияvar score:int = 2011;nameramkaTextField.width = 105;nameramkaTextField.height = 35;nameramkaTextField.x = 285;nameramkaTextField.y = 285;nameramkaTextField.background = true;nameramkaTextField.backgroundColor = 0x000000;nameramkaTextField.border = true;nameramkaTextField.borderColor = 0xFFFFFF;addChild(nameramkaTextField);nameramkaTextField.text = "-" + score;//Если дата отсутствует выводим только текущий год. С координатами не получилось. //_.autoSize = TextFieldAutoSize.CENTER; Пробовал выровнять текст по центру добавив в начало скрипта Main.as import flash.text.TextFieldAutoSize;
Аватара пользователя
Умри
Сообщения: 22
Зарегистрирован: 16 сен 2011, 07:04

Re: ВКонтакте API 3.0. Пример простого приложения

Сообщение Умри »

Robert писал(а):но у меня получилась только статическая рамка.

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

nameramkaTextField.autoSize=TextFieldAutoSize.LEFT;
Вот так, например, сделать и всё будет растягиваться :)
igorflash2
Сообщения: 20
Зарегистрирован: 06 авг 2011, 20:54

ВКонтакте API 3.0. Пример простого приложения (помогите)

Сообщение igorflash2 »

Хотел повторить урок из теммы http://flapps.ru/forum/topic992.html
Вроде все сделал правильно вкинул библиотеку подключил Main.as сменил ID приложения добавил на сцену 2 текстовых поля указал имя и UILoader с именем Avatar!
Выгрузив вк ни чего не работает, пробовал с контейнером и без!
Может нужно делать первый запрос к API ? если да то как пожалуйста помогите , с меня на пиво :D
ссылка на приложение
http://vkontakte.ru/app2751904
igorflash2
Сообщения: 20
Зарегистрирован: 06 авг 2011, 20:54

Re: ВКонтакте API 3.0. Пример простого приложения (помогите)

Сообщение igorflash2 »

вот

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

/* http://flapps.ru/forum/ - форум о создании флеш приложений на основе ВКонтакте API */package{    import flash.net.URLLoader;    import flash.net.URLRequest;    import flash.net.URLVariables;    import flash.net.URLRequestMethod;    import flash.display.*;    import flash.events.*;    import flash.text.TextField;    import fl.containers.UILoader;     public class Main extends Sprite    {        private var api_id:Number = 2751904;// ID приложения        private var url_loader:URLLoader;        private var url_request:URLRequest;        private var viewer_id;        private var secret:String;        private var sid:String;        private var api_url:String;         private var bdate_tf:TextField = new TextField();        private var name_tf:TextField = new TextField();        private var avatar:UILoader = new UILoader  ;         public function Main():void        {            // получаем данные из flashVars            // id просматривающего приложение            viewer_id = LoaderInfo(root.loaderInfo).parameters.viewer_id;            // secret для генерации сигнатуры            secret = LoaderInfo(root.loaderInfo).parameters.secret;            // id сессии            sid = LoaderInfo(root.loaderInfo).parameters.sid;            // адрес API-сервиса            api_url = LoaderInfo(root.loaderInfo).parameters.api_url;             // для тестирования локально, можно прописать их здесь (брать в исходном коде страницы с приложением)            /*            viewer_id = '1';            secret = 'abcd123456';            sid = 'abcd123456abcd123456abcd123456abcd123456abcd123456abcd1234';            api_url = 'http://api.vkontakte.ru/api.php';            */            // вызываем функцию получения профиля пользователя, просматривающего приложение            getProfile(viewer_id);        }         private function getProfile(uid):void        {            // параметры которые будем передавать в запросе и которые нужны для формирования сигнатуры            // параметры для формирования сигнатуры            var request_params: Object = new Object();            request_params.api_id = api_id;            request_params.method = 'getProfiles';            request_params.format = 'XML';            request_params.v = '3.0';            request_params.fields = 'bdate,photo_big';            request_params.uids = uid;             // параметры для отправки запроса            var variables:URLVariables = new URLVariables();            // часть параметров берем из request_params            for (var j:String in request_params)            {                variables[j] = request_params[j];            }            variables['sid'] = sid;// параметр sid нужно передавать в запросе, но он не используются при создании сигнатуры            variables['sig'] = generate_signature(request_params);// генерируем сигнатуру. Функция generate_signature описана ниже.             // подготавливаем запрос            url_request = new URLRequest(api_url);            // данные будем отправлять POST запросом            url_request.method = URLRequestMethod.POST;            // добавляем параметры в запрос            url_request.data = variables;            // отправляем запрос            url_loader = new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,onComplete);            url_loader.load(url_request);        }               // запрос выполнен        private function onComplete(event:Event):void        {            var response:XML = new XML(url_loader.data);             // выводим дату рождения пользователя            var bdate = response..bdate;            bdate_tf.text = bdate;            bdate_tf.x = 490;            bdate_tf.y = 380;            addChild(bdate_tf);             // выводим имя и фамилию пользователя            name_tf.text = response..first_name + ' ' + response..last_name;            name_tf.x = 410;            name_tf.y = 360;            addChild(name_tf);             // выводим аватарку пользователя            avatar.autoLoad = true;            avatar.scaleContent = false;            avatar.source = response..photo_big;            avatar.move(175,10);            addChild(avatar);        }         // функция генерации сигнатуры        private function generate_signature(request_params):String        {            var signature = '';            // сортируем параметры в алфавитном порядке            var sorted_array: Array = new Array();            for (var key in request_params)            {                sorted_array.push(key + "=" + request_params[key]);            }            sorted_array.sort();             // создаем строку параметров;            for (key in sorted_array)            {                signature +=  sorted_array[key];            }            signature = viewer_id + signature + secret;            return MD5.encrypt(signature);        }        // http://flapps.ru/forum    }}
igorflash2
Сообщения: 20
Зарегистрирован: 06 авг 2011, 20:54

Re: ВКонтакте API 3.0. Пример простого приложения

Сообщение igorflash2 »

У меня не выходит все сделал как написано но белый экран вк, что же не так? :?: :?: :?:
Ответить