Te suena la aplicación Clabchat? que usa las librerias Clabserver?
Este es el codigo del swf
Código PHP:
stop();
import ClabServer.Servidor;
mensaje_txt._visible = false;
var lista:Array = new Array();
//Limpieza
delete chat;
Key.removeListener(mensajeObj);
mensajeObj.onKeyDown = null;
delete mensajeObj;
//Estilos de componentes
listaLusers.setStyle("themeColor", "0xEFF3F7");
sb.setStyle("themeColor", "0xEFF3F7");
mensaje_txt.borderColor = 0x6294AE;
mensaje_txt.onSetFocus = function() {
this.backgroundColor = 0xE3ECF0;
};
mensaje_txt.onKillFocus = function() {
this.backgroundColor = 0xFFFFFF;
};
//Crea un nuevo chat
//Param: usuario, esChat, Nº de Sala
var chat = new Servidor(usuario, idRoom);
var mensajeObj:Object = new Object();
var inicio:Boolean = true;
//****Parametros de iniciación
_global.mensaje = "";
_global.conSonido = true;
var miEstilo:TextField.StyleSheet = new TextField.StyleSheet();
var elCSS:String = "nick{ color:#003366; font:Verdana, Arial, Helvetica, sans-serif; }"+"mensaje{ color:#333333; font:Arial, Helvetica, sans-serif; margin-left:5px; }"+"comando{ color:#5763A2; font:Verdana, Arial, Helvetica, sans-serif; }";
miEstilo.parseCSS(elCSS);
chat_txt.styleSheet = miEstilo;
listaLusers.dataProvider = lista;
//Listener que recibe los mensajes cada vez que llegan del servidor
chat.onMensaje = function(mensaje:Object) {
sonido(Servidor.TEXTO);
insMensaje(mensaje);
};
chat.onEntrada = function(userNuevo) {
sonido(Servidor.ENTRADA);
insertar({data:userNuevo.IDUsuario, label:userNuevo.Nick});
insAviso("<p><nick><b>"+userNuevo.Nick+"</b> ha entrado a la sala</nick></p>");
};
chat.onSalida = function(userSale) {
eliminar(userSale.Nick);
insAviso("<p><nick><b>"+userSale.Nick+"</b> ha salido de la sala</nick></p>");
};
chat.onLag = function(lag) {
lag_txt.text = lag;
};
chat.onLista = function(usuarios:Array) {
mensaje_txt._visible = true;
var obj:Object = new Object();
for (i in lista) {
lista.pop();
}
for (i in usuarios) {
obj = new Object();
obj.data = usuarios[i].ID;
obj.label = usuarios[i].Nick;
lista.push(obj);
}
if (inicio) {
listaUpdate();
inicio = false;
}
lista.sort();
};
chat.onError = function() {
clearNick();
_global.error = "DESCONECTADO DEL CHAT";
gotoAndPlay(1);
};
/* EVENTOS */
sonidoPick_mc.onRelease = function() {
if (this._currentframe == 1) {
_global.conSonido = false;
this.gotoAndStop(2);
} else {
_global.conSonido = true;
this.gotoAndStop(1);
}
};
logout_btn.onRelease = function() {
chat.logout();
};
mensajeObj.onKeyDown = function() {
if (Key.isDown(Key.ENTER)) {
var msg:String = String(mensaje_txt.text).split("<").join();
trace("msg: "+msg);
if (_global.mensaje != msg) {
chat.enviar(msg);
}
_global.mensaje = msg;
mensaje_txt.text = "";
}
};
Key.addListener(mensajeObj);
// FUNCIONES "FROM THE HELL" (Esto deberia ir en una clase U_U)
function eliminar(elem:String) {
for (i in lista) {
if (lista[i].label == elem) {
lista.splice(i, 1);
}
}
listaUpdate();
}
function insertar(luser:Object) {
for (i in lista) {
if (lista[i].label == luser.label) {
return;
}
}
lista.push(luser);
lista.sort();
listaUpdate();
}
function listaUpdate() {
listaLusers.redraw(true);
listaLusers.invalidate();
listaLusers.sortItems();
listaLusers.selectedIndex = 0;
}
function insMensaje(mensaje:Object) {
var msg:String = mensaje.Mensaje;
var nick:String = mensaje.Nick;
if (msg.slice(0, 1) == "/") {
if (msg.slice(1, 4) == "me ") {
msg = "<p><comando><b>"+nick+" </b>"+msg.slice(4, msg.length)+"</comando></p>";
} else if ((msg.slice(1, 5) == "quit" || msg.slice(1, 5) == "exit") && nick == usuario.user) {
clearNick();
} else {
msg = "";
}
} else {
msg = "<p><nick>"+nick+":</nick><mensaje>"+msg+"</mensaje></p>";
}
insAviso(msg);
}
function insAviso(aviso) {
chat_txt.htmlText += aviso;
chat_txt.scroll = chat_txt.maxscroll;
}
function sonido(tipo:Number) {
var nombre:String;
var son:Sound;
son = new Sound();
if (_global.conSonido) {
if (tipo == Servidor.ENTRADA) {
nombre = "entrada";
} else if (tipo == Servidor.TEXTO) {
nombre = "texto";
}
son.attachSound(nombre);
son.start();
son.onSoundComplete = function() {
delete this;
};
}
}