LUIZ AVANCI (51 pts)

SASHA GUDEY (235 pts)

STICKMAN (155 pts)

ALEXANDRE PORTO (1281 pts)

MUZAK (45 pts)

DEMIS BUCCI (50 pts)

RICARDO TAKAHASHI (180 pts)

MARLOS ALVES CARMO (90 pts)

ILVA RUDEV (90 pts)

EDUARDO WALMOTT (226 pts)

IRAPUAN MARTINEZ (45 pts)

JONAS GALVEZ (521 pts)
Treinamento PontoFlash de Flash e ActionScript

Qual é, em pixels, a altura e largura da área utilizável do browser para uma resolução de 800x600.

É possível referenciar um botão sem ser dentro de um movieclip?

Não consigo chamar um texto .txt dentro de um movieclip?

O que é a opção Interlaced quando vou salvar um bitmap PNG?

Como faço um cursor customizado apenas em uma determinada área do site?

Alguem conhece algum plug-in para exportar do 3d studio max e importar no flash?

Porque a extensão PHP3 não está funcionando no meu servidor Apache?

Como faço o loading bem simples?

Quero localizar a posição de um movieclip dinamicamente?

Alguém poderia me falar um pouco sobre o ASSetPropFlags e o ASBroadcaster?

Tem como chamar informações de um XML randomicamente no Flash?

Como eu poderia substituir um caractere ao longo de uma string?

Tem algum truque para diminuir o tamanho do meu site?

Há a possibilidade de puxar imagens por alguma variável?
Flash MX 2004 Updater

GuestBook usando integração Flash e PHP.

Nikefootball, uso e abuso do flash - Avaliação de sites

Níveis dentro do Flash - Load Movie e Load Variables (terceira parte)

Enviando variáveis do Flash para ASP.

Gerenciando camadas no CorelDraw

Pre-carregador (Preloader)

Escrevendo e lendo arquivos TXT com o FlashMX.

Janela popup.

Create TextField.

Formulário simples.

Editor de banco de dados (PHP-MySql) orientado a Objetos (OOP)
Magnifier

Controle deslizante de volume

Mouseline

Criptografia

Bspline3

Drag manchas

Trailer

Lightings

Rippled

Tint rgb

Mapa do Brasil

Trocaalphadofundo
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