Страница 1 из 1

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

Добавлено: 09 июн 2010, 10:10
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

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

Добавлено: 09 июн 2010, 11:08
revizor
эм..... инетересно в чем его использовать .......

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

Добавлено: 09 июн 2010, 11:25
psix55
Ну тогда интересно зачем вообще придумали методы для работы с предложениями!

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

Добавлено: 09 июн 2010, 13:24
revizor
psix55 писал(а):Ну тогда интересно зачем вообще придумали методы для работы с предложениями!
на них конкурс был ) вот и открыли ))))
я просто немогу придумать в каком приложении можно его использовать =)

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

Добавлено: 09 июн 2010, 14:26
bodnar
в любом. даже в фермере. Нажимаешь на кнопку и вуаля, тебе создали вопрос: Хотели бы вы быть мои соседом в веселом фермере? Или в приложениях ролевых играх: Хотели бы вы купить у меня шмот 3 левел 200 уе?

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

Добавлено: 28 ноя 2010, 02:17
zoke
Почему вы всегда пишите код в main.as ? там же не удобно редактировать.
я просто на кадр всё пишут , а код с main.as перевожу на кард (стираю лишние).

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

Добавлено: 28 ноя 2010, 07:03
bodnar
потому что почитай про ООП или Колина Мука, где он зоопарк делает.

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

Добавлено: 30 дек 2010, 15:32
Sasha
Я загружаю приложение Вконтакт и у меня последнее текстовое поле (где надо вводить своё предложение) неактивно вводить нельзя в нём ничего!
Из-за чего это?

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

Добавлено: 30 дек 2010, 20:28
psix55
Оно у тебя Input ??