![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Oct 2010
Сообщений: 3
|
Есть радио слитое с чатом.
вот Но движок у чата слабенький, там много багов: 1) Когда новые сообщения появляются, приходится перелистывать скроллпад вниз. Хорошо бы сделать, чтобы автоматом перелистывалось. 2) Нету статистики онлайн пользователей. Буду рад вашей помощи! Это код только для чата, если понадобится ещё и код радио, то напишите. import vk.*; //импотритуем все что нам надо var api_id:Number =1928187;//ID приложения, которое мы получили вначале var api_secret:String = "QbZcrMRTXo";//Ключ приложения, которое мы получили вначале 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(2500);//таймер, по срабатыванию которого будем обновять поле сообщений 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="http://vkontakte.ru/id'+save.children()[i].user_id+ '">' + save.children()[i].user_name + '</a>'+ "</font></b>: " + save.children()[i].message;//добавляем строку с его именем с ссылкой на его страничку синего цвета } } } } Последний раз редактировалось a0105666; 01.10.2010 в 18:16. Причина: дополнил |
|
|||||
|
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
Вы хотите, чтобы вам тут кто-то что-то сделал? Вам в вакансии.... Если хотите сделать сами, но не получается - задавайте конкретный вопрос.
|
|
|||||
|
Регистрация: Oct 2010
Сообщений: 3
|
Как сделать, чтобы автоматом перелистывался чат?
|
|
|||||
|
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
TextField#scrollV и TextField#maxScrollV вам в помощь
|
|
|||||
|
Регистрация: Oct 2010
Сообщений: 3
|
и в какое место и как именно вписать операторы?
я подставлял в код, но пишет ошибки: Цитата:
Последний раз редактировалось a0105666; 02.10.2010 в 17:23. |
|
|||||
|
Регистрация: Mar 2007
Сообщений: 545
|
Во вконтакте есть пример и исходники чата.
var api_secret:String = "ХХХХХХХ";//Ключ приложения, которое мы получили вначале это лучше не светить, хотя вытащить из флешки тоже не проблема конечно. |
|
|||||
|
Использую тот же самый движок чата, в последней опере при загрузке вылазит ошибка:
Причем, если ее проигнорировать, то дальше все прекрасно работает, как ни в чем не бывало. Как избавиться от ошибки? |
|
|||||
|
Для начала послать код в студию.
А еще лучше -- открыть справочник и\или учебник по флешу. Хотя бы с официального сайта. А в других браузерах что? Совет -- пользоваться дебаговым плеером и каким-нибудь плагином типа FlashTracer. |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:30. |
|
|
« Предыдущая тема | Следующая тема » |
|
|