Чат по средствам VkApi

Чат по средствам VkApi

Приступим к стозданию чата. Для начала создаем приложение:

Теперь запомним некоторые данные, которые мы получили при создании:

Далее настраиваем прложение таким образом:

Теперь открываем adobe Flash и создаем новый Файл Flash(ActionScript3). Нажимаем Ctrl+F7 и из появившегося окна на сцену тащим: Button, TaxtArea и TextInput. Теперь обзываем Button - btn, TextArea - pole а TextInput - Mess_tf. Нажимаем F9. В окне редактирования ода пишем:

import vk.*;
//импотритуем все что нам надо
 
//все это необходимое есть в архиве с исходником
 
var api_id:Number =1605383;//ID приложения, которое мы получили вначале
var api_secret:String = "IQyfnhjlTc";//Ключ приложения, которое мы получили вначале
var viewer_id:Number;//id пользователя который просматривает приложение
var url_loader1:URLLoader = new URLLoader();//лоадеры
var url_request1:URLRequest = new URLRequest();
var url_loader2:URLLoader = new URLLoader();
var url_request2:URLRequest = new URLRequest();
var url_loader3:URLLoader = new URLLoader();
var url_request3:URLRequest = new URLRequest();
var api:VkApiNode;//создаем переменную класса, каждый вызов к Api буде создаваться ее экземпляр
var query:String;// переменная пути запроса в URL, а данные будут передаваться методом GET
var timer:Timer = new Timer(2500);//таймер, по срабатыванию которого будем обновять поле сообщений 2.5, самое оптималное время, но меняйте как душе угодно
var save:XML=new XML();//XML который хранит сообщения
var VkAvatar:Loader = new Loader();//Лоадер для аватара
var VkAvatarUrl:URLRequest = new URLRequest();//путь аватара
var wrapper:Object;//обьект <<контейнер>>, который загружает в себя приложение
 
this.addEventListener( Event.ADDED_TO_STAGE, onAddedToStage );//событие произойдет, когда контейнер полностью загрузит приложение
 
function onAddedToStage(e: Event):void {
    Security.allowDomain("*");
    stage.dispatchEvent(new Event(Event.DEACTIVATE));//решение проблемы неработоспособности некоторых элементов
    stage.dispatchEvent(new Event(Event.ACTIVATE));
    wrapper = Object(this.parent.parent);//определяем контейнер
    viewer_id = wrapper.application.parameters.viewer_id;//передаем переменной знчение id просматривающего приложение
    timer.start();//запускаем таймер
 
    stage.addEventListener(Event.ENTER_FRAME, Emess);//добавляем слушатели
    btn.addEventListener(MouseEvent.CLICK, onMessGo);
    timer.addEventListener(TimerEvent.TIMER, onGetMess);
    Mes_tf.addEventListener(KeyboardEvent.KEY_DOWN, onMessOtpr);
 
    api=new VkApiNode(viewer_id,api_id,api_secret);//загружаем профиль пользователя и самый маленький аватар(photo_medium и photo_big большее размеры), который просматривает приложение
    query=api.getProfiles([viewer_id], ['photo']);
    url_request3=new URLRequest(query);
    url_loader3=new URLLoader;
    url_loader3.addEventListener(Event.COMPLETE, EComplet2);//событие произойдет когда профиль загрузится
    url_loader3.load(url_request3);
}
 
function EComplet2(e:Event):void
{
    var XmlO:XML = new XML(url_loader3.data);//создаем переменную хранящую профиль
    VkAvatarUrl = new URLRequest(XmlO.children()[0].photo);//загружаем аватар
    VkAvatar.load(VkAvatarUrl);
    VkAvatar.contentLoaderInfo.addEventListener(Event.COMPLETE, onVkAvatar);//событие произойдет когда аватар загрузится
}
function onVkAvatar(e:Event):void
{
    VkAvatar.x = 2;
    VkAvatar.y = 2;
    addChild(VkAvatar);//добавляем на сцену аватар
}
function onMessOtpr(e:KeyboardEvent):void
{
    if(e.keyCode == 13)//если пользавеиель нажал клавишу Enter
    {
        if(Mes_tf.text !== "")//если пое для ввода сообщений не пустое
        {
            api=new VkApiNode(viewer_id,api_id,api_secret);//деаем запрос и ставим сообщение в очередь
              query=api.sendMessage(Mes_tf.text);
            url_request1=new URLRequest(query);
               url_loader1=new URLLoader;
               url_loader1.load(url_request1);
            Mes_tf.text = "";
        }
    }
}
 
function Emess(e:Event):void
{
    if(Mes_tf.text == "")//если поле пустое на кнопку нажать нельзя
    {
        btn.enabled = false;
    }else{//если нет то можно
        btn.enabled = true;
    }
}
function onMessGo(e:MouseEvent):void
{
    api=new VkApiNode(viewer_id,api_id,api_secret);//деаем запрос и ставим сообщение в очередь
    query=api.sendMessage(Mes_tf.text);
    url_request1=new URLRequest(query);
    url_loader1=new URLLoader;
    url_loader1.load(url_request1);
    Mes_tf.text = "";
}
function onGetMess(e:TimerEvent):void
{
    api=new VkApiNode(viewer_id,api_id,api_secret);//загружаем очередь сообщений
    query=api.getMessages();
    url_request2=new URLRequest(query);
    url_loader2=new URLLoader;
    url_loader2.addEventListener(Event.COMPLETE, EComplet);
    url_loader2.load(url_request2);
}
function EComplet(e:Event):void {
    if(XML(url_loader2.data).message_info !== null)//если в очереди хоть что-то есть
    {
        save = new XML(url_loader2.data);//передаем XML полученные данные
        for(var i:int=0; i<save.length(); i++)//запускаем цикл
        {
            if(save.children()[i].user_id == viewer_id)//если данное сообщение отправленно пользователем, который просматривает приложение
            {
                pole.htmlText += '<b><font color="#ff0000">' + save.children()[i].user_name + "</font></b>: " + save.children()[i].message;//добавляем строку с его именем и сообщением без ссылки и красного цвета
            }else{//если это отправил другой пользователь
                pole.htmlText += '<b><font color="#000080"><a href="https://vkontakte.ru/id'+save.children()[i].user_id+ '">' + save.children()[i].user_name + '</a>'+ "</font></b>: " + save.children()[i].message;//добавляем строку с его именем с ссылкой на его страничку синего цвета
            }
        }
    }
}

Нажимам Ctrl + Enter и если ошибок компиляции небыло, а приложение не работает, то значит все правильно. Заходим в контакт и переходим к нашему, ране созданному, приложению. Заходим в настройки и загружаем SWF:

На всякий случай проверяем настройки:

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

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

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

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

Это был самый пример самого простого чата. Я даже не исползоват time сообщений. Вы можете изменить его как душе угодно и вставить в свое приложение. Но даже не пытайтесть создать обычный чат и отправить его на проверку

Исходник: 

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

Комментарии

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

К чему же он? Ведь есть уже готовый исходник

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

для того,  что бы новичкам был более понятен принцип работы чата 

smile

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

спасибо, я один из тех новичков)

 

кстати работает)

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

ололошник, ты и тут спамишь своим быдлокодом)))

зы: https://vkontakte.ru/app1727441#view=301935

Аватар пользователя wasek-25

нет не у кого видео урока по создания flash чата (api ) ?

на Русском,или исходника на чат более мощней?)

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

Отличный урок!

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

я тоже новенький (см. логин)! и я благодарен автору урока

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

У меня тоже работает

dance2

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

а какой Adobe Flash???а то я не пойму...

helper


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

Цитата: Aleckei

а какой Adobe Flash???а то я не пойму... helper

CS4 или CS5

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

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

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

а я когда нажимаю кнопку отправить ни хрена не че не  происходит

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

Работает

yahoo

 

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

kirillovna, если не работает, значит че то напутал

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

А можно сюда как-нибудь радио впихнуть?

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

урок супер, спс автору, только есть недостаток, чат сам непрокручиваетса, и невидно кто в чате...но на то ето и урок))
а может ктото подсказать как осуществить автопрокрутку и "кто онлайн"??просто я в етом деле новичёк))

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

У меня тоже нечё непраисходит кагда нажимаеш наконопку отправить смс проста кудато исчезает и всё и идут в длину две точки автоматически смс непередаётся при нажатее на кнопку отправить а проста исчезаит люди у каво он работает патскажите когда пишеш скрип то вот там где в скрипте зелёным цветом написано ну где лоадеры и так далее где зелёным цветом написано первое два это панятно номер и ключ а вот дальше проста автор неабьеснил или там нечево ненадо вписывать где зелёным цветом написано если хто знает то патскажите можна на маю почту

или на аську 609-603-736

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

У тебя одна ошибочка, не TextInput - Mess_tf , а TextInput - Mes_tf , а еще у меня не вышло, вот -

4at.bmp -я могу вводить текст где хочу и все время появляются " : "

chats.bmp- где здесь ОБЫЧНЫЙ ключ??????

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

VittyRude,
уменя совтарова раза палучилась скачать но он нерабочий паходу или надо што-то вписывать где написано зелёным

Аватар пользователя VittyRude
Цитата: DJ_

уменя совтарова раза палучилась скачать но он нерабочий паходу или надо што-то вписывать где написано зелёным

- нет!  если у тебя опера, то просто нажми правой кнопкой на любое место страницы(пустое) и на жми на "открыть в-> Internet explorer" и скачивай! ЛЮДИ ПОМОГИТЕЕЕЕ!!!!!!! - 

У тебя одна ошибочка, не TextInput - Mess_tf , а TextInput - Mes_tf , а еще у меня не вышло, вот -

4at.bmp -я могу вводить текст где хочу и все время появляются " : "

chats.bmp- где здесь ОБЫЧНЫЙ ключ??????

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

Спецификация api немного изменилась, урок может уже не совпадать с действительностью. Смотрите спецификацию

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

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

Аватар пользователя DJ_
Цитата: VittyRude

TextInput

 ну ика мне эту ашибку исправить и где находится в коде или в кантакте эти ашибки TextInput - Mes_tf 

Создал свой чат работает описания внутри 
Аватар пользователя VittyRude

Цитата: Fly

Смотрите спецификацию

  - а где она находиться? ))

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

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

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

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

Fly, спасибо!