Flash CS3
Package: flash.net
Classe: public final class URLRequest,
Classe: public class URLLoader,
Classe: public dynamic class URLVariables,
Versão AS: ActionScript 3.0
Player: Flash Player 9 ou superior
Dificuldade: Básico.
Obs: Para um bom aproveitamento deste artigo é interessante ter lógica de programação, noções básicas para leitura de sintaxe ActionScript 3.0 e PHP.
Fala galera, tranquilo?!
Vamos ver uma das maneiras de criar um formulário de e-mail utilizando AS3 em conjunto com um script PHP.
O exemplo mostrado é relativamente simples, mas acredito ser um bom ponto de partida pra começar. Depois você mesmo poderá incrementá-lo conforme achar necessário.
Pra fazer os testes, você precisa de um servidor para hospedar seu arquivo PHP.
No final deste artigo, está disponÃvel para download o mesmo exemplo abordado aqui.
Indice:
1- Introdução;
2- Criando os objetos na tela;
3- Inserindo código AS3;
4- Explicando o código AS3;
5- Criando script PHP;
6- Download.
1- Introdução
No Flash, basicamente, para este exemplo do formulário, além de utilizarmos um script PHP que irá "interagir" com Actionscript, precisamos utilizar 3 classes mais notáveis no AS3 que faz parte do Package flash.net, sendo elas:
- URLRequest(), é responsável por armazenar endereços externos. No nosso caso, será um arquivo PHP;
- URLLoader(), é responsável por “recuperar” dados/informações externas. A qual iremos manipular informações externas com uso de Eventos.
- URLVariables(), criamos "variáveis" que recebem o conteúdo digitado nos campos de textos do Flash. Com isso, conseguimos comunicar com o arquivo PHP e enviar as informações para no destinatário de e-mail.
E de quebra, pra incrementar um pouco mais a funcionalidade do nosso Formulário. Utilizaremos a classe Timer(), em que a sua aplicação é muito semelhante com as funções setInterval() e setTimeout(). No nosso caso, a classe Timer() simplesmente irá chamar/executar uma determinada função depois de um tempo especÃfico estipulado. Veremos isso mais adiante.
2- Criando os objetos na tela
Dica: É sempre bom criarmos um hábito de organização com web. Sugiro criar uma pasta para guardar seus arquivos Flash e PHP;
Com Flash CS3 aberto, crie um arquivo novo documento: versão Actionscript 3.0.
Para organizar os conteúdos crie 2 camadas, sendo elas:
- Actions
- Objetos

Imagem 1: Criando camadas para organizar os objetos.
Na camada Objetos, iremos criar 5 campos de texto, sendo que, 4 deles serão dinâmicos do tipo "input Text", e 1 campo de texto do tipo Dynamic Text que será destinado para mostrar os avisos ao usuário sobre o que acontece quando ele tenta enviar os dados. E também precisamos de um botão com nome de instância enviarBtn, que será responsável por enviar os dados.
Cada objeto estão organizados com seus respectivos nomes de instâncias. Você poderá acompanhar na imagem 2 a seguir, na seguinte ordem:
- Campo Nome:
- Tipo: Input Text
- Instância: nomeTxt
- Campo E-mail:
- Tipo: Input Text
- Instância: nomeTxt
- Campo Assunto:
- Tipo: Input Text
- Instância: avisoTxt
- Campo Mensagem:
- Tipo: Input Text
- Instância mensagemTxt
- Botão
- Tipo: MovieClip
- Instância: enviarBtn
- Campo Aviso:
- Tipo: Text Dynamic
- Instância avisoTxt

Imagem 2: Criando os objetos.
3- Inserindo o código AS3
Na camada Actions, selecione o 1º e único frame, e abra o painel de Actions, atalho [F9], e insira o código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | System.useCodePage = true; var tempo:Timer = new Timer( 3000, 1 ); tempo.addEventListener( TimerEvent.TIMER, limpaAviso ); enviarBtn.addEventListener( MouseEvent.CLICK, enviaMensagem ); /* ########################## * Funções * #########################*/ function enviaMensagem( event:MouseEvent ):void{ if(nomeTxt.text == "" || emailTxt.text == "" || assuntoTxt.text == "" || mensagemTxt.text == ""){ avisoTxt.text = "Preencha os campos."; tempo.start(); } else{ enviaDadosParaPHP(); } } function enviaDadosParaPHP(){ avisoTxt.text = "Enviando mensagem..."; var variaveis:URLVariables = new URLVariables(); variaveis.nomePhp = nomeTxt.text; variaveis.emailPhp = emailTxt.text; variaveis.assuntoPhp = assuntoTxt.text; variaveis.mensagemPhp = mensagemTxt.text; var urlPhp:URLRequest = new URLRequest("seu aqruivo php aqui"); urlPhp.method = URLRequestMethod.POST; urlPhp.data = variaveis; var loader:URLLoader = new URLLoader(); loader.addEventListener( Event.COMPLETE, envio ); loader.addEventListener( IOErrorEvent.IO_ERROR, erroNoEnvio ); loader.load( urlPhp ); } function envio( e:Event ):void{ avisoTxt.text = "Mensagem enviada!"; limpaCampos(); tempo.start(); } function erroNoEnvio( e:IOErrorEvent ):void{ avisoTxt.text = "Ops! Surgio erro! Tenta novamente."; tempo.start(); } function limpaCampos(){ nomeTxt.text = emailTxt.text = assuntoTxt.text = mensagemTxt.text = ""; } function limpaAviso( e:TimerEvent ):void { avisoTxt.text = ""; } |
4 - Explicando o código AS3
Linha 1: simplesmente habilitamos para o Flash receber textos com acentuação.
Linha 3: criamos uma nova instância tempo, que faz parte da Classe Timer(), nesta classe Timer, o seu construtor solicita 2 parâmetros: tempo de intervalo em milesegundos, e referência da função. Ou seja, após 3 segundos(3000 milesegundos) irá chamar uma função que denominamos de limpaAviso(), está função veremos mais adiante.
Linha 6: para o botão com nome de instância enviarBtn, adicionamos um "ouvinte de Eventos"(addEventlistener), e quando este botão receber um "evento de clique do mouse"(MouseEvent.CLICK), irá chamar/executar a função enviaMensagem() que veremos a seguir.
A partir de linha 12 em diante, temos uma sequência de funções, as quais cada uma terá um seu objetivo. Vamos analisá-las.
Linha 12 a 19:
Vamos começar com a função enviaMensagem(). Esta simplesmente verifica se(if) todos os campos de textos foram preenchidos(nome, email, assunto, mensagem), caso alguns destes campos estiverem vazios, mostra mensagem na caixa de aviso(avisoTxt.text), informando o usuário que precisa preencher todos os campos.
Logo a seguir, utilizamos o método Timer.start() da nossa instância tempo, cujo função é apenas disparar uma determinada função depois de um intervalo especÃfico. Ou seja, o código tempo.start() irá chamar a função limpaAviso() que apenas apaga o campo de texto avisoTxt logo após o intervalo de 3 segundos.
Agora, caso todos os campos estiverem preenchidos, simplesmente executa a função enviaDadosParaPHP() e prosseguimos adiante.
Linha 21 a 38:
Temos a função enviaDadosParaPHP() que é responsável por enviar as informações de fato.
Na linha 22 informamos ao usuário que estamos enviando a mensagem.
Em seguida, temos que utilizar 3 classes:URLVariables, URLRequest, URLLoader. Vamos começar pela classe URLVariables.
Na linha 24 a 28, criamos a instância denominada de variaveis que faz parte da classe URLVariables().
Precisamos criar 4 variáveis referente a cada campo de texto do formulário. Estas variáveis serão responsáveis por armazenar informações digitadas pelo usuário, depois o Flash fará comunicação com o scrit PHP, ficando responsável por reter essas informações do Flash e enviar os dados para o e-mail do destinatário.
Para criarmos uma variável da classe URLVaribles, simplesmente utilizamos qualquer nome sugestivo como propriedade da classe URLVariavels. Com isso criamos as seguintes variáveis, sendo elas:
variaveis.nomePhp
variaveis.emailPhp
variaveis.assuntoPhp
variaveis.mensagemPhp
Em cada variável criada, recebem informações quando o usuário digitar alguma informação nos campos de texto dinâmico.
Por exemplo, informo que a variável variavies.nomePhp, recebe informações vinda do campo de texto dinâmico nomeTxt.text. E assim por diante.
Linha 30 a 32:
Na linha 30, criamos a instância chamada urlPhp a partir da classe URLRequest(), que será responsável por armazenar um endereço externo, no caso o próprio script PHP que iremos criar depois.
Na linha 31, utilizamos a propriedade URLRequest.method que informa o tipo de envio que faremos no caso o método POST(URLRequestMethod.POST).
Na linha 32, informamos pela propriedade URLRequest.data que todas informações digitadas pelo usuário, estarão contidas em nossa variável denominada variaveis da classe URLVariables().
Ou seja, isso tudo simplesmente fala algo como: enviar todas as informações inseridas no formulário para o script PHP.
Linha 34 a 37:
Agora, na linha 34, criamos nossa instância denominada de infoPhp da classe URLLoader(), que simplesmente será responsável por recuperar informações sobre o que acontece com os dados enviados pelo formulário. Com URLLoader, conseguimos obter informações e disparar eventos para podermos informar ao usuário se os dados foram enviados com sucesso ou se surgiu algum erro durante o envio.
Na linha 35, adicionamos para a instância infoPhp, um ouvinte de eventos(addEventlistener), que verifica quando os dados forem enviados/carregados por completo(Event.COMPLETE), dispara a função envio(), que informa ao usuário que os dados foram enviados com sucesso.
Na linha 36, novamente para a instância infoPhp, adicionamos um ouvinte de eventos(addEventlistener), que verifica se tem um "erro fatal" que resulta em um "cancelamento" na hora de carregar o arquivo externo(IOErrorEvent.IO_ERROR), dispara a função erroNoEnvio(), que informa ao usuário que surgiu algum erro durante o envio.
E finalmente na linha 37, apenas carregamos pelo método URLLoader.load(), o dados externo, no caso, o arquivo PHP que iremos criar mais tarde.
Isto encerra nossa função enviaDadosParaPHP().
As 4 funções a seguir, como cada nome já sugere, simplesmente são utilizados durante todo o processo de verificação. Vejamos:
Linha 40 a 44: a função envio(), simplesmente mostra o aviso ao usuário que as informações foram enviadas. Em seguida chama a função limpaCampos() que apenas deixa os campos sem nenhum conteúdo. Depois, chamamos a função limpaAviso() logo após 3 segundos, para apagar o aviso mostrado ao usuário.
Linha 51 a 53: a função limpaCampos(), apenas limpa todos os campos de textos.
Linha 55 a 57: a função limpaAviso(), apaga o conteúdo da caixa de texto avisoTxt.
No mais terminamos nosso código AS3. Vamos agora para o script PHP.
5- Criando script PHP
Vamos criar o script PHP, que está brevemente comentado no próprio código. É relativamente simples.
Abra um bloco de notas, ou seu editor de códigos, e salve este arquivo na mesma pasta do seu arquivo Flash. Dêmos o nome de: mail.php
Insira o seguinte código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php //coloque o email de destinatário: $enviaPara = 'seu email aqui'; //Criamos variaveis PHP que recupera as Variaveis criadas no Flash $campoNome = $_POST['nomePhp']; //retorna o valor digitado no campo "nomeTxt" do Flash $campoEmail = $_POST['emailPhp']; //retorna o valor digitado no campo "emailTxt" do Flash $campoAssunto = $_POST['assuntoPhp']; //retorna o valor digitado no campo "assuntoTxt" do Flash $campoMensagem = $_POST['mensagemPhp']; //retorna o valor digitado no campo "mensagemTxt" do Flash //Assunto padrão do seu e-mail $subject = 'E-mail vindo do site tal'; //Monta o corpo da mensagem enviada $mensagem = "Nome: ".$_POST['nomePhp']." \n"; $mensagem .= "E-mail: ".$_POST['emailPhp']." \n"; $mensagem .= "Assunto: ".$_POST['assuntoPhp']." \n\n"; $mensagem .= "Mensagem: \n". $_POST['mensagemPhp']; //e-mail do remetente: $mail_headers = 'From: '.$_POST['emailPhp']; //envia o e-mail mail($enviaPara, $subject, $mensagem, $mail_headers); ?> |
Basta hospedar seu arquivo Php em algum servidor e fazer os testes.
Obs: Lembra-se de informar o endereço do arquivo PHP no código AS.
6 - Download
Download deste exemplo final.
Abraços e até a próxima!
Rodrigo Gonçalves
Equipe Alvo Web
