Php com FlashMX
por Rodrigo Rodrigues

Veja neste artigo como é fácil integrar o Php com o Flash(através da linguagem de programação chamada ActionScript).



Na Versão Flash5 a integração era bem escassa existindo somente 2 comandos "loadVariables e loadVariableNum", apartir do FlashMX criaram a Classe "LoadVars()" que dá maior suporte, lembrando que os filmes Flash's podem se integrar com "qualquer linguagem", veja abaixo a descrição dos métodos, propriedades e eventos da Classe LoadVars.

Para instanciar a Classe.
minhaVarLoadVars = new LoadVars(); // Onde a variável(minhaVarLoadVars) é um nome qualquer.

Métodos da Classe LoadVars()
1) getBytesLoaded()
Descrição: Retorna o total dos dados já carregados.

2) getBytesTotal()
Descrição: Retorna o tamanho total em bytes dos dados.

3) load(url)
Descrição: Carrega uma página ou arquivo que retorne algum dado ou informação.
Argumento url: Caminho da página(page.php, arq.txt).

4) send(url, target, method)
Descrição: Envia dados para a url informada.
Argumento url: Caminho da página(processa_formulario.php).
Argumento target: janelas possivéis(_top, _blank).
Argumento method: O tipo do método que será enviado(GET ou POST).

5) sendAndLoad(url, objetoLoad, method)
Descrição: Envia dados para a url informada ao mesmo tempo que recebe.
Argumento url: Caminho da página(processa_formulario.php).
Argumento objetoLoad: Nova instância da classe LoadVars() que recebe as informações da url.
Argumento method: O tipo do método que será enviado(GET ou POST).

6) toString()
Descrição: Converte um objeto do tipo LoadVars() para uma String.

Propriedades da Classe LoadVars()
1) contentType
Descrição: Declara o tipo da extensão, mais conhecido como MIME(Multi-purpose Internet Mail Extension).

2) loaded
Descrição: Retorna um boolean(true ou false) caso os dados tenham sido carregado ou enviado.

Evento da Classe LoadVars()
1) onLoad
Descrição: O evento é chamado quando concluído o carregamento dos dados.

Na próxima página iremos carregar um arquivo txt para o flash.

Crie um arquivo txt no formato abaixo.
arquivo.txt

carregandoTxt = Php com FlashMX, vai Corinthians.

Lembrando que precisa colocar antes do Texto a declaração "carregandoTxt=" para que o flash o reconheça.

Crie um filme(flash_arquivo.fla) do tamanho(width 300 px, height 300 px backGroundColor: black) com apenas 1 frame, faça um campo dinâmico com o nome "variavelTxt" e coloque o seguinte script.

loadTxt = new LoadVars();
loadTxt.load("arquivo.txt");
loadTxt.onLoad = function(success) {
    _root.variavelTxt = loadTxt.carregandoTxt; // Variável(carregandoTxt) declarada no txt.
};

O txt e o filme precisa estarem no mesmo diretório.

Crie uma página para chamar o filme(swf).
arquivo.php

<html>
<head>
<title>Php com FlashMX</title>
</head>

<body>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="300" height="300">
  <param name="movie" value="flash_arquivo.swf">
  <param name="menu" value="false">
  <param name="quality" value="high">
  <embed src="flash_arquivo.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="300" height="300"></embed></object>
</body>
</html>

Pronto, chame no browser e verá o resultado.

Para baixar os arquivos deste exemplo http://www.phpbrasil.com/scripts/download.php/id/2484

Na próxima página iremos carregar dados de uma tabela para o flash.

Execute o Sql
sql_db.sql

CREATE TABLE `nome` (
  `id` int(10) NOT NULL auto_increment,
  `nome` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

INSERT INTO nome VALUES("1","Rodrigo Rodigues dos Santos");
INSERT INTO nome VALUES("2","Corinthians Grande");
INSERT INTO nome VALUES("3","Php Comunidade");
INSERT INTO nome VALUES("4","Java Sun Technologies");
INSERT INTO nome VALUES("5","Asp Big Shit");


Crie a página de conexão
conexao.php

<?php 
$conn 
= @mysql_connect("localhost""root""xxx") or die(mysql_error());
$db = @mysql_select_db("test"$conn) or die(mysql_error());

$sql "select nome from nome order by nome desc";
$sqlQuery = @mysql_query($sql$conn) or die(mysql_error());
$i 0;
while(
$result = @mysql_fetch_array($sqlQuery)){
    echo 
"&nome$i = ".$result[0]; // Não pode esquecer de acrescentar o "&" no começo.
    
$i++;
}

mysql_close($conn);
?>

IMPORTANTE: Para o flash receber os dados precisa acrescentar no ínicio da variável o operador "&".

Crie um filme(flash_php.fla) do tamanho(width 300 px, height 300 px backGroundColor: black) com apenas 1 frame, faça um campo dinâmico com o nome "variavelPhp" e coloque o seguinte script.

loadPhp = new LoadVars();
loadPhp.load("conexao.php");
loadPhp.onLoad = function(success) {
    arrayNome = new Array();
    incrementador = 0;
    for (nome in loadPhp) {
        arrayNome[incrementador] = loadPhp[nome]; // Indice(nome) declarado na página.
        incrementador += 1;
    }
    for (i=0; i<incrementador-1; i++) {
        _root.variavelPhp += arrayNome[i]+"\n";
    }
};


Crie uma página para chamar o filme.
php_flash.php

<html>
<head>
<title>Php com FlashMX</title>
</head>

<body>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="300" height="300">
  <param name="movie" value="flash_php.swf">
  <param name="menu" value="false">
  <param name="quality" value="high">
  <embed src="flash_php.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="300" height="300"></embed></object>
</body>
</html>

Pronto, chame no browser e verá o resultado.

Para baixar os arquivos deste exemplo http://www.phpbrasil.com/scripts/download.php/id/2485

Na próxima página iremos enviar um formulário do flash para o Php e esperando uma resposta da página.

Crie um filme(flash_formulario.fla) do tamanho(width 500 px, height 300 px backGroundColor: gray) com 3 layers e em cada layer 1 frame, crie 3 campos "inputs" com os nomes "nome, email e comentário" e um campo dinâmico chamado "msg", crie um botão para enviar o formulário, o meu ficou assim.
%http://www.fotolist.com.br/galeriafotos/RODRIGOTIMAO20040727173307.JPG%

No primeiro layer deixe somente os actions, segue o script.

btEnviar.onRelease = function() {
    if (_root.nome eq "" || _root.nome.length<=0) {
        _root.msg = "Campo Nome é obrigatório.";
    } else if (_root.email.indexOf("@") == -1 || _root.email eq "") {
        _root.msg = "Campo Email inválido.";
    } else if (_root.comentario eq "" || _root.comentario.length<=0) {
        _root.msg = "Campo Comentário é obrigatório.";
    } else {
        enviaEmail = new LoadVars();
        enviaEmail.nomeFlash = _root.nome; // Variável(nomeFlash) será resgatada no Php.
        enviaEmail.emailFlash = _root.email; // Variável(emailFlash) será resgatada no Php.
        enviaEmail.comentarioFlash = _root.comentario; // Variável(comentarioFlash) será resgatada no Php.
        
        isEnviaEmail = new LoadVars();
        enviaEmail.sendAndLoad("processa_formulario.php", isEnviaEmail, "POST"); // Página que irá enviar o email.
        _root.msg = "Enviando Comentário para o email("+_root.email+")...";
        
        isEnviaEmail.onLoad = function(success) {
        
           isEnvio = isEnviaEmail.isEnvio; // Variável(isEnvio) do Php retorna um boolean(verdadeiro ou falso).
            if (isEnvio eq "true") {
                _root.msg = "Email enviado com sucesso...";
                _root.nome = ""; // Limpa campo.
                _root.email = ""; // Limpa campo.
                _root.comentario = ""; // Limpa campo.
            } else {
                _root.msg = "Não enviou o email.";
                _root.nome = ""; // Limpa campo.
                _root.email = ""; // Limpa campo.
                _root.comentario = ""; // Limpa campo.
            }
        };
        
    }
};
stop();

A primeira parte do script verifica se os campos "nome, email e comentário" estão vazios, estando ok envia para a página processar o formulário e retorna uma resposta(boolean da variável "isEnvio") para o filme.

Crie a página que irá enviar o email.
processa_formulario.php

<?php 
$nome 
$_POST['nomeFlash']; // Variável do Flash.
$email $_POST['emailFlash']; // Variável do Flash.
$comentario $_POST['comentarioFlash']; // Variável do Flash.

if(!( empty($nome) and empty($email) and empty($comentario) )){
    
$subject "Php com FlashMX";
    
$message .= "Olá <b>$nome</b>.<br>\n";
    
$message .= "Você postou o seguinte assunto<br>\n ".nl2br($comentario)."<br>\n";
    
$headers "From: rodrigo_coringao@".substr(str_replace("w"""$_SERVER['SERVER_NAME']), 1)."\n";
    
$headers .= "MIME-Version: 1.0\r\n";
    
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    if(
mail($email$subject$message$headers)){
        echo 
"&isEnvio=true";
    } else {
        echo 
"&isEnvio=false";
    }
} else {
    echo 
"&isEnvio=false";
}
?>

Enviando o email a variável(isEnvio) retorna um true.

Crie uma página para chamar o filme.
php_formulario.php

<html>
<head>
<title>Php com FlashMX</title>
</head>

<body>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="500" height="300">
  <param name="movie" value="flash_formulario.swf">
  <param name="menu" value="false">
  <param name="quality" value="high">
  <embed src="flash_formulario.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="500" height="300"></embed></object>
</body>
</html>

Pronto, chame no browser e verá o resultado.

Para baixar os arquivos deste exemplo http://www.phpbrasil.com/scripts/download.php/id/2486

Referências:
www.macromedia.com
www.pontoflash.com.br

Sem mais, Rodrigo Rodrigues.