Чат на AS3

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
Аватара пользователя
Евгений
FL Team
FL Team
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01

Чат на AS3

Сообщение Евгений »

Здравствуйте! :D У меня есть один интересный вопрос! :)
Как можно сделать чтобы ID определенного пользователя выделялся цветом в чате? :|

Вот код чата, написан на AS3

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

import vk.*;//импотритуем все что нам надо var api_id:Number =******;//ID приложения, которое мы получили вначалеvar api_secret:String = "********";//Ключ приложения, которое мы получили вначале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;//создаем переменную классаvar query:String;var timer:Timer = new Timer(1000);//таймер, по срабатыванию которого будем обновять поле сообщений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 = -440;    VkAvatar.y = -215;    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="http://vkontakte.ru/id'+save.children()[i].user_id+ '">' + save.children()[i].user_name + '</a>'+ "</font></b>: " + save.children()[i].message;//добавляем строку с его именем с ссылкой на его страничку синего цвета            }        }    }}
Помогите! :cry: Очень надо!
Аватара пользователя
psix55
Модератор
Модератор
Сообщения: 1015
Зарегистрирован: 09 дек 2009, 17:16

Re: Чат на AS3

Сообщение psix55 »

Код ты писал??

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

 if(save.children()[i].user_id == admin_id)//если данное сообщение отправленно Админом admin_id - id админа            {pole.htmlText += '<b><font color="#FF0000"><a href="http://vkontakte.ru/id'+save.children()[i].user_id+ '">' + save.children()[i].user_name + '</a>'+ "</font></b>: " + save.children()[i].message;//добавляем строку с его именем с ссылкой на его страничку красного цвета}
Аватара пользователя
revizor
FL Team
FL Team
Сообщения: 1034
Зарегистрирован: 18 ноя 2009, 20:22

Re: Чат на AS3

Сообщение revizor »

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

Re: Чат на AS3

Сообщение psix55 »

Если бы он писал, он бы не задавал этот вопрос :)
Аватара пользователя
Евгений
FL Team
FL Team
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01

Re: Чат на AS3

Сообщение Евгений »

Код не я писал!
Спасибо, большое! ;)
Аватара пользователя
psix55
Модератор
Модератор
Сообщения: 1015
Зарегистрирован: 09 дек 2009, 17:16

Re: Чат на AS3

Сообщение psix55 »

:D ;)
Аватара пользователя
Евгений
FL Team
FL Team
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01

Re: Чат на AS3

Сообщение Евгений »

Спасибо!!! Разобрался! :D
Аватара пользователя
Евгений
FL Team
FL Team
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01

Re: Чат на AS3

Сообщение Евгений »

Помогите.... :?
Когда я отправляю сообщение в чате, оно отправляется 2 раза... почему?

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

import vk.*;//импотритуем все что нам надо var api_id:Number =*****;//ID приложения, которое мы получили вначалеvar api_secret:String = "*********";//Ключ приложения, которое мы получили вначале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;//создаем переменную классаvar query:String;var timer:Timer = new Timer(1000);//таймер, по срабатыванию которого будем обновять поле сообщений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 = -440;    VkAvatar.y = -215;    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="http://vkontakte.ru/id'+save.children()[i].user_id+ '">' + save.children()[i].user_name + '</a>'+ "</font></b>: " + save.children()[i].message;//добавляем строку с его именем с ссылкой на его страничку синего цвета            }            if(save.children()[i].user_id == 20035313)//если данное сообщение отправленно Админом admin_id - id админа            {pole.htmlText += '<b><font color="#007896"><a href="http://vkontakte.ru/id'+save.children()[i].user_id+ '">' + save.children()[i].user_name + '</a>'+ "</font></b>: " + save.children()[i].message;//добавляем строку с его именем с ссылкой на его страничку красного цвета}        }    }}
Аватара пользователя
romaniom
ЗАБАНЕН!
Сообщения: 112
Зарегистрирован: 25 мар 2011, 12:38

Re: Чат на AS3

Сообщение romaniom »

а как сделать в этом чате сколько онлайн и вывести их имена? я делал так

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

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++)//запускаем цикл        {            //ee.text=save.children()[i].user_name + " ";            if(save.children()[i].user_id != viewer_id){                ee.text=save.children()[i].user_name+ " ";            }
но не выходит, показывает лишь того кто написал последним
Последний раз редактировалось bodnar 29 мар 2011, 18:40, всего редактировалось 1 раз.
Причина: Используйте [code] [/code] для оформления кода.
Ответить