Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чат+радио вконтакте 
:(
    Опции темы
0105666
Дата 2.10.2010, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 2.10.2010

Репутация: нет
Всего: нет



Есть радио слитое с чатом.
вот
Но движок у чата слабенький, там много багов:
1) Когда новые сообщения появляются, приходится перелистывать скроллпад вниз. Хорошо бы сделать, чтобы автоматом перелистывалось.
2) Нету статистики онлайн пользователей.

Буду рад вашей помощи!
Это код только для чата, если понадобится ещё и код радио, то напишите.
Код

import vk.*;
//импотритуем все что нам надо

var api_id:Number =123456;//ID приложения, которое мы получили вначале
var api_secret:String = "123456";//Ключ приложения, которое мы получили вначале
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;//добавляем строку с его именем с ссылкой на его страничку синего цвета
            }
        }
    }
}

Буду рад вашему движку чата, с которым будет работать код, представленный ниже.
Код

var url:String="http://maddyson.listen.moeradio.ru:10000/maddyson";
var music:SoundChannel;
var request:URLRequest=new URLRequest(url);
var sound:Sound = new Sound();
sound.load(request);
music=sound.play();
SoundMixer.soundTransform = new SoundTransform(0.4);




[/code]

PM MAIL   Вверх
ОВиталий
Дата 3.10.2010, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 17.10.2008

Репутация: нет
Всего: нет



думаю. за 25$ я бы исправил баги или за 50$ сделал бы новый посимпатичней

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 3 | Следующая тема »


 




[ Время генерации скрипта: 0.0385 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.