MARLOS ALVES CARMO (90 pts)

KEN AWAMURA (130 pts)

EDUARDO WALMOTT (226 pts)

HELEN TRIOLO (444 pts)

DANIELA PIRES (86 pts)

STICKMAN (155 pts)

SÁVIO PONTE (39 pts)

DEMIS BUCCI (50 pts)

FLASHGURU (155 pts)

DAAFY (55 pts)

JONAS GALVEZ (521 pts)

MAURO ROCHA TAVARES (40 pts)
Treinamento PontoFlash de Flash e ActionScript

Preciso enviar um formulário integrando Flash e ASP.

Tem como alinhar objetos em frames diferentes de uma vez só?

Estou criando um combo works ou o famoso jogo de palavras.

Como controlar play e stop de um movimento feito em Actionscript por um botão?

Como posso enviar e-mail através de um formulário feito no flash sem ser pelo formmail.pl?

Necessito realizar um questionário com 10 perguntas.

Porque sempre o relógio no Flash mostra 1 hora atrasado?

Como fazer um efeito de escalar imagens no mouseOver e no MouseOut?

Como faço para contar o tempo de duração de uma corrida num labirinto?

Como fazer uma timeline andar mais lenta que outra?

O quê significa INT, como no exemplo "tempo = int ( tempo );"?

Tem como colocar botões “próximo texto” e “texto anterior” quando abro com load variables?

Quero mudar uma ação de acordo com a hora do dia.

Preciso de um formulário em asp que sirva para buscar dados em um banco de dados.
Jogo da Forca

Gira logo.

Quando usar vetor ou bitmap?

Fade Out.

Fireworks, o patinho feio da Macromedia.

Guias de movimento (motion guide)

Desenvolvendo um Controle de Volume Customizado em Flash

HACKED - ANONYMOUS

Usando Define Patern para criar texturas contínuas no PhotoShop.

0wn3d Again BY Destution Team

LoadVariables & OnClipEvent(data).

Detectando funções de browser usando ASP
Galho

Digitação (6kb) - Flash4

Curva elastica

Natal Misc

Spiral show

Create line

Balão

Aleatory move

Gettimer

Fract1

Ir e voltar

Despertador
HOME | TRUQUES E DICAS
Queria enviar um formulário via ASP usando a classe LoadVars e o método sendAndLoad.
por Neto Leal



De uma maneira bem simples, seria assim.

//Envio de formulário de email simples
function enviaFormulario(){
    var obj_s = new LoadVars();
    var obj_l = new LoadVars();
    obj_s.nome = nome.text; //Valor do nome
    obj_s.email = email.txt;
    obj_s.mensagem = mensagem.text;
    obj_l.onLoad = function(o){
        if(o){
            trace("dados cadastrados !");
        }
    };
    obj_s.sendAndLoad("arquivo.asp",obj_l,"POST");
}
//fim

A classe LoadVars, possui um conjunto de métodos que permitem ao desenvolvedor criar desde rotinas simples de envio de formulário de e-mail, até complexos acessos à bancos de dados.

Existia no Flash5 (e ainda existe no Flash MX), uma ação chamada loadVariables. Que permitia "trazer" textos externos para o flash. Esses textos poderiam estar em arquivos TXT ou em bancos de dados no servidor. Mas a utilização dessa ação era um tanto precária e não oferecia recursos práticos para o desenvolvedor.

Como qualquer classe, a LoadVars precisa ser instanciada. Para isso usamos o operador new como no exemplo a seguir:

var objLoadVars = new LoadVars();

O primeiro método que iremos ver, é o método load. Esse método tem apenas a funcinalidade de ler um arquivo e interpretar seu conteúdo.

var objLoadVars = new LoadVars();
objLoadVars.load("seuArquivo.txt");

Uma consideração sobre o arquivo txt deve ser feita:
O arquivo deve seguir um padrão URL QueryString. Mas o que seria isso ?

Uma QueryString, é uma sequencia de pares Variavel=Valor separados por um "&" como segue o exemplo (arquivo "seuArquivo.txt"):

Nome=Neto Leal&profissao=Programador&especialidade=Flash

Aqui podemos identificar três variáveis :

Variável Valor
------------------------------
Nome Neto Leal
profissao Programador
especialidade Flash

Assim o objeto LoadVars criado por você, teria três propriedades com os nomes e valores informados por você no arquivo TXT:

trace(objLoadVars.Nome); //Exibiria "Neto Leal"
trace(objLoadVars.profissao); //Exibiria "Programador"
trace(objLoadVars.especialidade); //Exibiria "Flash"

Mas aí existe um problema. Se você testar esse Script em sua máquina local, provavelmente irá funcionar. Porém em um servidor web, alguns imprevistos (já previstos) podem acontecer. O que provavelmente acontecerá, é que a ação trace será executada antes que os dados sejam lidos pelo FlashPlayer. O que quer dizer que você precisa primeiro identificar o momento exato que o Flash termina de ler o dados, para depois poder usá-los em seu script.

A classe LoadVars, possui um evento camado onLoad que é disparado justamente no momento em que os dados são lidos pelo Flash. Vejamos como ficaria nosso Script:

var objLoadVars = new LoadVars();
objLoadVars.load("seuArquivo.txt");

objLoadVars.onLoad = function(){
    trace(objLoadVars.Nome);
    trace(objLoadVars.profissao);
    trace(objLoadVars.especialidade);
};

Agora sim temos o resultado esperado.

Mas isso nem sempre é o suficiente. Você pode precisar de um conteúdo dinâmico para seu arquivo txt, e é aí que entram as linguagens server-side (ColdFusion, ASP, PHP ...). Você pode criar um arquivo no servidor na linguagem de sua preferência, e fazer com que seja retornado para o flash, texto dinâmico que pode até ser gerado a partir de uma consulta à banco de dados.

Vejamos o exemplo à seguir:

(Arquivo noticias.cfm)



Temos aqui um arquivo ColdFusion, que tem a funcionalidade de fazer uma consulta à banco de dados e trazer de lá uma única linha que será a notícia mais recente existente na tabela. Ao executarmos esse arquivo em um servidor ColdFusion através de um browser, teremos algo parecido com isso:

(Caso haja registro na tabela)

texto=Infomar realiza treinamentos oficiais&data=01/01/2003&fonte=Macromedia

(Caso não haja registro na tabela)

texto=Nenhuma Notícia&data=00/00/0000&fonte=Sem Fonte

O seu ActionScript ficaria da seguinte forma:

function atualizaNoticias(){
    var objNoticia = new LoadVars();
    objNoticia.load("noticia.cfm");
    objNoticia.onLoad = function(ok){
        if(ok){
            trace(objNoticia.texto);
            trace(objNoticia.data);
            trace(objNoticia.fonte);
        }else{
            trace("Erro na leitura do arquivo");
        }
    };
}

Outro caso de utilização do LoadVars, é o envio de dados para o servidor. Existem métodos dessa poderosa classe que permitem o envio e recebimento de dados provenientes de um servidor web.

objLoadVars.sendAndLoad(<arquivo>,<objReceptor>,<método de envio>);

O método sendAndLoad permite enviar e receber dados de um arquivo (informado no parâmetro "arquivo") no servidor. O parâmetro "objReceptor" é um objeto LoadVars que irá receber os dados retornados pela operação. Já o parâmetro "método de envio" indica a forma de envio das variáveis para o servidor (POST ou GET). Uma das diferenças entre os dois métodos, é a forma de "resgatar" esses dados do lado do servidor. Veja o exemplo utilizando ColdFusion:

(dados enviados com POST)

<cfoutput>#Form.suaVariavel#</cfoutput>

(dados enviados com GET)

<cfoutput>#URL.suaVariavel#</cfoutput>

Uma utilização bastante comum para o método sendAndLoad, é no desenvolvimento de formulários de contato em Flash. A grande vantagem do uso do método sendAndLoad, é que os dados são enviados para o servidor, que por sua vez trata os dados realizando consulta à banco de dados ou qualquer outro processo e devolve uma resposta que é compreendida pelo flash. Isso tudo sem a necessidade do redirecionamento da página. Então para o usuário final, a impressão que fica, é que os dados foram tratados no próprio cliente.

O ganho de tráfego é muito grande, pois apenas os dados necessários para a operação é que trafegam pelo servidor. Criando assim uma navegação mais leve e eficiente.

Veja o exemplo a seguir:

(arquivo formulario.fla)
function enviaForm(){
    var objEnvia = new LoadVars();
    var objRecebe = new LoadVars();

    objEnvia.nome = tNome_txt.text;
    objEnvia.email = tEmail_txt.text;
    objEnvia.mensagem = tMensagem_txt.text;

    objEnvia.sendAndLoad("email.cfm",objRecebe,"POST");
    objRecebe.onLoad = function(ok){
        if(ok){
            trace("dados enviados com sucesso!");
        }else{
            trace("Erro no envio");
        }
    };
}

(arquivo email.cfm)



Neto Leal


0 comentário