Предложения (offers: get, open, close, edit)

Темы только для ознакомления. Уроки по использованию старой версии ВКонтакте API и устаревших методов.
Ответить
Аватара пользователя
psix55
Модератор
Модератор
Сообщения: 1015
Зарегистрирован: 09 дек 2009, 17:16

Предложения (offers: get, open, close, edit)

Сообщение psix55 »

Предложения (offers: get, open, close, edit) //Потом сделаю ещё!
ActionScript 3.0 (Adobe Flash CS4)

Приложение получает предложение пользователя, редактирует его, открывает и закрывает!

Для работы с методами ВКонтакте API используется измененная мною библиотека VkApi. Находится в архиве с исходником.

Описание используемых методов

offers.get - Возвращает информацию о предложении, размещенном текущим пользователем.
offers.close - Закрывает предложение текущего пользователя, убирая его из общего доступа.
offers.open - Открывает предложение текущего пользователя для общего доступа.
offers.edit - Сохраняет информацию о предложении текущего пользователя.

В уроке не использованы все возможные способы работы с предложениями.Например : offers.search, offers.getInboundResponses, offers.getOutboundResponses, offers.accept и другие!В скором времени возможно сделаю урок и с ними!
В коде урока нет обработок ошибок, возвращаемых сервером.

Создание приложения

1. Добавляем на сцену:
Текстовые поля с именами:
- offer_txt(поле вывода информации о текущем предложении, а так же просьбы об обновлении страницы)
- result_txt(поле вывода результатов)
- mess_txt (поле ввода текста для нового предложения)

Кнопки с именами:
- yes
- no
- editOffer

2. Создаём Main.as и пишем код:

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

/* http://flapps.ru/forum/ - форум о создании флеш приложений на основе ВКонтакте API */package {    import flash.net.*;    import flash.display.*;    import flash.events.*;    import flash.text.*;    import vk.VkApiNode;     public class Main extends Sprite    {        private var api_id:Number = 123456;// ID приложения        private var api_secret:String = "ololo";// секретный ключ        private var api:vk.VkApiNode;        private var server_url;        private var viewer_id;        private var url_loader:URLLoader;        private var url_request:URLRequest;        private var query:String;        private var wrapper:Object;         public function Main ():void        {            this.addEventListener ( Event.ADDED_TO_STAGE, onAddedToStage );        }         public function onAddedToStage (e: Event):void        {            wrapper = Object(parent.parent);            var flags = wrapper.application.parameters.api_settings;            // проверяем доступ к предложениям пользователя            if (Boolean(flags & 32))             {                viewer_id = wrapper.application.parameters.viewer_id;                api = new VkApiNode(viewer_id,api_id,api_secret);                editOffer.addEventListener (MouseEvent.CLICK,offerEdit);                yes.addEventListener (MouseEvent.CLICK, offerChangeYes);                no.addEventListener (MouseEvent.CLICK, offerChangeNo);                offerGet ();            }            else            {                // доступа нет                // вызываем окно с настройками приложения (доступ к предложению пользователя)                wrapper.external.showSettingsBox (32);                //Этот урок не по использованию контейнера, поэтому придется просто обновить страницу.                offer_txt.text = 'Обновите страницу с приложением';            }            //Запрашиваем данные о текущем предложении            function offerGet ():void            {                // создаем и выполняем запрос                query = api.offersget();                url_request = new URLRequest(query);                url_loader = new URLLoader  ;                url_loader.addEventListener (Event.COMPLETE,offersGot);                url_loader.load (url_request);            }            //Ответ от api.vkontekte.ru получен!            function offersGot (e:Event)            {                var offer:XML = new XML(url_loader.data);                var active:String = "";                if (offer..active == 1)                 {                    active = "Открыто";                }                if (offer..active == 0)                {                    active = "Закрыто";                }                offer_txt.text = "Текущее предложение : " + offer..message + "\n" + "Состояние : " + active;            }            //Делаем предложение открытым            function offerChangeYes (e:MouseEvent)            {                // создаем и выполняем запрос                api = new VkApiNode(viewer_id,api_id,api_secret);                query = api.offersopen();                url_request = new URLRequest(query);                url_loader = new URLLoader  ;                url_loader.addEventListener (Event.COMPLETE,offerChangingCompleteYes);                url_loader.load (url_request);            }            //Ответ от api.vkontekte.ru получен!            function offerChangingCompleteYes (e:Event)            {                result_txt.text = "OK, открыто"; //Внимание!Здесь можно реализовать проверку на ошибку!(Я не делал)                offerGet ();            }            //Делаем предложение закрытым            function offerChangeNo (e:MouseEvent)            {                // создаем и выполняем запрос                api = new VkApiNode(viewer_id,api_id,api_secret);                query = api.offersclose();                url_request = new URLRequest(query);                url_loader = new URLLoader  ;                url_loader.addEventListener (Event.COMPLETE,offerChangingCompleteNo);                url_loader.load (url_request);            }            //Ответ от api.vkontekte.ru получен!            function offerChangingCompleteNo (e:Event)            {                result_txt.text = "OK, закрыто";//Внимание!Здесь можно реализовать проверку на ошибку!(Я не делал)                offerGet ();            }            //Изменяем предложение.            function offerEdit (e:MouseEvent)            {                // создаем и выполняем запрос                api = new VkApiNode(viewer_id,api_id,api_secret);                query = api.offeredit(mess_txt.text);                url_request = new URLRequest(query);                url_loader = new URLLoader  ;                url_loader.addEventListener (Event.COMPLETE,offerEditionComplete);                url_loader.load (url_request);            }            //Ответ от api.vkontekte.ru получен!            function offerEditionComplete (e:Event)            {                result_txt.text = "OK, изменено";//Внимание!Здесь можно реализовать проверку на ошибку!(Я не делал)                offerGet ();            }         }    }}
Заменяем api_id и api_secret на свои данные.

3. Подключаем Main.as к fla
Если не знаете как, то посмотрите как это было сделано в этом уроке http://flapps.ru/forum/topic3.html

4. Загружаем приложение в контакт
Редактирование -> Настройки -> Обновление SWF-приложения -> Обзор -> Начать загрузку.

- Если приложение выключено, то включаем
Редактирование -> Настройки -> Состояние -> Приложение включено и видно всем.

- Если выключен контейнер, то включаем
Редактирование -> Настройки -> Flash-контейнер -> Без отступов и элементов управления.

5. Всё готово!Нажимаем ctrl + enter или shift + f12

Исходник http://psix55.jino.ru/offers.rar
Аватара пользователя
revizor
FL Team
FL Team
Сообщения: 1034
Зарегистрирован: 18 ноя 2009, 20:22

Re: Предложения (offers: get, open, close, edit)

Сообщение revizor »

эм..... инетересно в чем его использовать .......
Аватара пользователя
psix55
Модератор
Модератор
Сообщения: 1015
Зарегистрирован: 09 дек 2009, 17:16

Re: Предложения (offers: get, open, close, edit)

Сообщение psix55 »

Ну тогда интересно зачем вообще придумали методы для работы с предложениями!
Аватара пользователя
revizor
FL Team
FL Team
Сообщения: 1034
Зарегистрирован: 18 ноя 2009, 20:22

Re: Предложения (offers: get, open, close, edit)

Сообщение revizor »

psix55 писал(а):Ну тогда интересно зачем вообще придумали методы для работы с предложениями!
на них конкурс был ) вот и открыли ))))
я просто немогу придумать в каком приложении можно его использовать =)
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Предложения (offers: get, open, close, edit)

Сообщение bodnar »

в любом. даже в фермере. Нажимаешь на кнопку и вуаля, тебе создали вопрос: Хотели бы вы быть мои соседом в веселом фермере? Или в приложениях ролевых играх: Хотели бы вы купить у меня шмот 3 левел 200 уе?
zoke
Сообщения: 11
Зарегистрирован: 18 окт 2010, 21:58

Re: Предложения (offers: get, open, close, edit)

Сообщение zoke »

Почему вы всегда пишите код в main.as ? там же не удобно редактировать.
я просто на кадр всё пишут , а код с main.as перевожу на кард (стираю лишние).
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Предложения (offers: get, open, close, edit)

Сообщение bodnar »

потому что почитай про ООП или Колина Мука, где он зоопарк делает.
Sasha
Сообщения: 53
Зарегистрирован: 18 дек 2010, 20:48

Re: Предложения (offers: get, open, close, edit)

Сообщение Sasha »

Я загружаю приложение Вконтакт и у меня последнее текстовое поле (где надо вводить своё предложение) неактивно вводить нельзя в нём ничего!
Из-за чего это?
Аватара пользователя
psix55
Модератор
Модератор
Сообщения: 1015
Зарегистрирован: 09 дек 2009, 17:16

Re: Предложения (offers: get, open, close, edit)

Сообщение psix55 »

Оно у тебя Input ??
Ответить