Meu GuestBook (netoleal.com.br)
Faz tempo que não escrevo aqui =)
Como todos já devem saber, lancei a pouco tempo a
nova versão do meu site pessoal. E uma coisa que deve ter chamado a atenção de muitos, é o sistema de Guestbook onde você mesmo pode fazer um desenho que será gravado em um banco de dados, e futuramente quando outras pessoas entrarem no site, poderão ver o desenho feito por você. Acredito que poucos sites têm esse recurso (não vi nenhum ainda).
Pois bem, conversando com o Dauton, ele me perguntou se seria possível disponibilizar o código do meu guestbook para que pudessem ver e matar a curiosidade, então resolvi fazer esse post !
Aí vai o código fonte =)
PS.: Não reparem, quando fiz isso devia ser umas 3 da matina ...
/* Efeito com as carinhas expressivas (ícones de mensagem) e seleção delas */form = {};
for(var i=1;i<=6;i++){
eval("i0" + i).valor = i;
eval("i0" + i).v = i*3;
eval("i0" + i)._xscale = eval("i0" + i)._yscale = 1;
eval("i0" + i).onEnterFrame = function(){
this._xscale = this._yscale += (100-this._xscale)/this.v;
this._alpha = this._xscale;
if(Math.round(this._alpha) == 100) delete this.onEnterFrame;
};
eval("i0" + i).onRelease = function(){
form.icone = this.valor;
$icone.$onEnterFrame = $icone.onEnterFrame;
$icone.onEnterFrame = function(){
this._x += 10;
this._rotation += 10;
this._alpha -= 3;
this.$onEnterFrame();
if(Math.round(this._alpha) <= 0) this.removeMovieClip();
};
$icone = this.duplicateMovieClip("icone_" + (++deptIco),deptIco,{
vY : 20,
gravidade : 2,
atrito : .98,
elasticidade : .93,
onEnterFrame : function(){
this.vY = (this.vY+this.gravidade)*this.atrito;
this._y += this.vY;
if (this._y+(this._height/2)>piso_mc._y) {
this._y = piso_mc._y-(this._height/2);
this.vY = -this.vY*this.elasticidade;
}
}
});
$cor = new Color($icone).setRGB(0xFFCC00);
};
}
//Montagem das mensagensant_mc.pos = [];
$mct = attachMovie("fundo_ico","t",0,{_visible: false});
qtdmens = 5*13;
for(var l = 1,d=0;l<=5;l++){
for(var c = 1; c<=13;c++,d++){
ant_mc.pos.push(ant_mc.attachMovie("fundo_ico","i[" + l + "][" + c + "]",d,{
_x: ($mct._width*c)+ (c*5),
_y: ($mct._height*l)+ (l*5)
}));
}
}
function montaguest(pg){
var reg = pg*qtdmens;
for(var i = reg ,p = 0; p < qtdmens; i++,p++){
ant_mc.pos[p].attachMovie("ico0" + mensagens.imagens[i],"im" + mensagens.cods[i],0,{
cod: mensagens.cods[i],
nome: mensagens.nomes[i],
imagem: mensagens.imagens[i],
_alpha: 50,
onRollOver: function(){
mnome_txt.text = this.nome;
this._alpha = 100;
},
onRollOut: function(){
mnome_txt.text = "";
this._alpha = 50;
},
onRelease: function(){
usumsg_txt.html = true;
usumsg_txt.htmlText = "<font size=\"18\">Lendo mensagem de " + this.nome + " ...</font>";
a = areausu_mc.attachMovie("ico0" + this.imagem,"ico",1,{
_x: areausu_mc.ico._x,
_y: areausu_mc.ico._y
});
c = new Color(a)
c.setRGB(0x000000);
var _mg = new LoadVars();
var gu = new LoadVars();
gu.onLoad = function(){
usumsg_txt.htmlText = "<font size=\"12\"><b>" + this.nome + "</b></font><br>" + this.mensagem;
criaAssinatura(this.assinatura)
};
_mg.cod = this.cod;
_mg.sendAndLoad(urlserv + "asp/guestdet.asp",gu,"POST");
}
});
}
}
leGuest();
function leGuest(){
usumsg_txt.html = true;
usumsg_txt.htmlText = "<font size=\"18\">Atualizando Guest ...</font>";
var _lv = new LoadVars();
_lv.onLoad = function(ok){
usumsg_txt.text = ""
if(ok){
mensagens = {
cods: this.cods.split("||"),
nomes: this.nomes.split("||"),
imagens: this.imgs.split("||")
}
montaguest(0);
}else{
ant_mc.attachMovie("erro_guest","erro",d,{
_x: 0,_y:0,_xscale: 1, _yscale: 1,
onEnterFrame: function(){
this._xscale = this._yscale += (100-this._xscale)/5;
if(Math.round(this._xscale) == 100) delete this.onEnterFrame;
},
onOk: function(){
this.removeMovieClip();
leGuest();
}
});
}
};
_lv.load(urlserv + "asp/guest.asp?" + new Date().getTime());
}
campos = [nome_txt, email_txt, mens_txt];
nome_txt.mc = nome_mc;
email_txt.mc = email_mc;
mens_txt.mc = mens_mc;
for(var i = 0;i<campos.length;i++){
campos[i].tabIndex = i;
campos[i].onSetFocus = function(){
this.mc.onEnterFrame = function(){
if((this._alpha += 5)>= 100) delete this.onEnterFrame;
}
};
campos[i].onKillFocus = function(){
this.mc.onEnterFrame = function(){
if((this._alpha -= 5)<= 50) delete this.onEnterFrame;
}
}
campos[i].onKillFocus();
}
function enCampos(valor,tipo){
for(var i=0;i<campos.length;i++){
campos[i].type = tipo;
campos[i].selectable = valor;
}
gravar_btn.enabled = valor;
limpar_btn.enabled = valor;
}
function limpaCampos(){
for(var i=0;i<campos.length;i++){
campos[i].text = "";
}
}
limpar_btn.onRelease = limpaCampos;
gravar_btn.onRelease = function(){
var assina = [];
for(var i=0;i<assina_mc.coord.length;i++){
if(typeof(assina_mc.coord[i]) == "number"){
assina.push(assina_mc.coord[i].toString(10));
}else{
assina.push([assina_mc.coord[i].x,assina_mc.coord[i].y].join(","));
}
}
for(var i=0;i<campos.length;i++){
if(campos[i].text.split(" ").join("").length == 0){
status_txt.text = "Informe todos os campos !";
return false;
}
}
if(form.icone == undefined){
status_txt.text = "Escolha um ícone!";
return false;
}
var assinatura = assina.join("-");
this.enabled = false;
enCampos(false,"dynamic");
status_txt.text = "Gravando dados ...";
var form_lv = new LoadVars();
var rece_lv = new LoadVars();
form_lv.nome = nome_txt.text;
form_lv.email = email_txt.text;
form_lv.mensagem = mens_txt.text;
form_lv.imagem = form.icone;
form_lv.assinatura = assinatura;
rece_lv.onLoad = function(){
status_txt.text = "";
enCampos(true,"input");
gravar_btn.enabled = true;
leGuest();
};
form_lv.sendAndLoad(urlserv + "asp/arquivoquegrava.asp",rece_lv,"POST");
};
function criaAssinatura(texto){
var assina = texto.split("-");
for(var i=0;i<ass_mc.tracos.length;i++){
ass_mc.tracos[i].removeMovieClip();
}
ass_mc.d = 0;
ass_mc.tracos = [];
if(assina.length > 0){
i = 0;
ass_mc.onEnterFrame = function(){
if(i==0 || assina[i] == "0"){
t = this.createEmptyMovieClip("traco_" + (++this.d),this.d);
this.tracos.push(t);
coord = assina[i+1].split(",");
t.lineStyle(0,0x000000,100);
t.moveTo(Number(coord[0]),Number(coord[1]));
}else{
coord = assina[i].split(",");
t.lineTo(Number(coord[0]),Number(coord[1]));
if(assina[i+1] != "0"){
coord = assina[++i].split(",");
t.lineTo(Number(coord[0]),Number(coord[1]));
}
}
if(++i==assina.length)delete this.onEnterFrame;
}
}
}
stop();
//Usuário desenhando a assinaturatracos = [];
this.coord = [];
marc_mc._visible = false;
marc_mc.cresce = function(){
this._visible = true;
marc_mc._xscale = marc_mc._yscale = 1;
this.onEnterFrame = function(){
if(Math.round(this._xscale = this._yscale += (100-this._xscale)/5) == 100)
delete this.onEnterFrame;
};
};
desenho_btn.onRelease = function() {
marc_mc._visible = !marc_mc._visible;
if(marc_mc._visible)marc_mc.cresce();
papel_mc.onMouseDown = function() {
if (marc_mc._visible) {
if (this._xmouse>0 && this._xmouse<this._width
&& this._ymouse>desenho_btn._y+desenho_btn._height && this._ymouse<this._height) {
t_mc = papel_mc.createEmptyMovieClip("traco_"+(++depthDesenho), depthDesenho);
tracos.push(t_mc);
t_mc.lineStyle(0, 0x000000, 100);
t_mc.moveTo(this._xmouse, this._ymouse);
this.onMouseMove = function() {
if (this._xmouse>0 && this._xmouse<this._width
&& this._ymouse>desenho_btn._y+desenho_btn._height && this._ymouse<this._height) {
t_mc.lineTo(this._xmouse, this._ymouse);
coord.push({x: this._xmouse, y: this._ymouse});
}
};
this.onMouseUp = function() {
coord.push(0);
delete this.onMouseMove;
};
}
}
};
};
apagar_btn.onRelease = function() {
for (var i = 0; i<tracos.length; i++) {
tracos[i].removeMovieClip();
}
depthDesenho = 0;
tracos = [];
coord = [];
};
postado por Neto Leal em 9:46 PM