HUFERSIL.WEBDEVELOPER - Soluções com qualidade - Hugo Ferreira da Silva

Lumine - Tutorial 7 - Integrando com Flash CS 3 Sex, 02 de maio de 2008 - as 09h22 - Nenhum comentário

Aproveitando o gancho que fui ajudar uma pessoa no fórum do iMasters, vou mostrar um exemplo rápido de como usar o Lumine com o Flash CS 3.

É um exemplo bem simples, perto das funcionalidades que podemos criar com as duas ferramentas.

Para este tutorial, vamos usar:

  • Flash CS 3 com AS 3
  • PHP, MySQL
  • Lumine

Código em PHP

Na primeira etapa, vamos fazer uma consulta na tabela de usuários do sistema que mantenho aqui na faculdade onde trabalho.
Vamos listar somente os 20 primeiros registros da tabela, para que nosso exemplo não fique muito grande.
Comentei o código linha por linha, então leia os comentários que facilitará bastante o entendimento.

<?php

// recupera o arquivo de configuração
// nele contem os includes das classes, configurações com o banco etc.
require_once 'phps/config.php';

// importa a classe de usuários
Lumine::import('Usuarios');

// cria uma nova instancia de usuarios
$obj = new Usuarios;

// limita em 20 registros e faz a consulta
$obj->limit(20)
    ->find();

// string XML para enviar ao flash
$xml = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;

// inicia o nó raiz do XML
$xml .= '<usuarios>' . PHP_EOL;

// para cada usuario encontrado
while( $obj->fetch() )
{
    // cria um novo nó XML
    // usamos utf8_encode para os acentos irem certinho para o flash
    // sem precisar usar a gambiarra do System.useCodePage do Flash
    $xml .= sprintf('   <usuario nome="%s" login="%s" senha="%s" codusuario="%s" />' . PHP_EOL,
            utf8_encode($obj->nome),
            $obj->login,
            md5($obj->senha),
            $obj->codusuario
    );
}

// fecha a string XML
$xml .= '</usuarios>';

// muda o cabeçalho para enviar os dados
header("Content-Type: text/xml");
// envia os dados
echo $xml;

Salve o arquivo como usuarios.php.

Note que usamos a função header do PHP para alterar o cabeçalho de envio padrão de informações, para quando acessarmos através do navegador, o mesmo já reconheça que se trata de um XML, e não de um arquivo texto comum.

Após isso, acesse pelo navegador.
No meu caso, o endereço ficou http://localhost/usuarios.php

O resultado deverá ser semelhante ao abaixo (alterei os dados de login e nome por asterisco para poder postar):

<usuarios>
<usuario nome="**************" login="**************" senha="fda32ab687e786d03ce45c7a676596fc" codusuario="1"/>
<usuario nome="**************" login="**************" senha="f7cf05cecc36bea67c8e474969f05477" codusuario="282"/>
<usuario nome="**************" login="**************" senha="dbd088f925b889ef668a2cb14068d1f2" codusuario="283"/>
<usuario nome="**************" login="**************" senha="1b51b29e3bb1d35b40096ffe3201860f" codusuario="284"/>
<usuario nome="**************" login="**************" senha="32e38b203469f6cc59d721d8eb74d595" codusuario="285"/>
<usuario nome="**************" login="**************" senha="911a1f8772a360938d64ce0cbaca2345" codusuario="286"/>
<usuario nome="**************" login="**************" senha="66cabb01f180d2a6282559dcf930e333" codusuario="287"/>
<usuario nome="**************" login="**************" senha="1d9a4034f132d4c396465ba2c35c3da0" codusuario="289"/>
<usuario nome="**************" login="**************" senha="c007710f9852e673a7c2ef995469240f" codusuario="290"/>
<usuario nome="**************" login="**************" senha="dba7b84a914e501872df43999c27f32e" codusuario="267"/>
<usuario nome="**************" login="**************" senha="77d5f9a97bc57968336fed0a3ee288d0" codusuario="268"/>
<usuario nome="**************" login="**************" senha="ff381d28d5cb0c66f0d17138b02d8e91" codusuario="269"/>
<usuario nome="**************" login="**************" senha="f7273747b8aa4a655df190920f60de16" codusuario="270"/>
<usuario nome="**************" login="**************" senha="a0e82e160bf97a05bf4dbee09c50e799" codusuario="271"/>
<usuario nome="**************" login="**************" senha="630a354571be287e6d0f8258ec737a50" codusuario="272"/>
<usuario nome="**************" login="**************" senha="e85225a5fe7dbf331d9c97a1881adc77" codusuario="273"/>
<usuario nome="**************" login="**************" senha="911a1f8772a360938d64ce0cbaca2345" codusuario="274"/>
<usuario nome="**************" login="**************" senha="ba74c695ac20c7ee997eb6c7ce06ae74" codusuario="275"/>
<usuario nome="**************" login="**************" senha="2ff8b705da6b8c7d25ee6c92da6b0fee" codusuario="276"/>
<usuario nome="**************" login="**************" senha="c17d37ae463e31bca00a101463726525" codusuario="277"/>
</usuarios>

A parte em PHP está pronta, agora vamos para a parte em Flash.


Acessando um XML via Flash AS 3

Abra um novo arquivo no Flash CS 3 com a versão de Action Script 3.

O código abaixo irá consultar o arquivo PHP que criamos, pegar o retorno gerado, colocar dentro de um objeto XML e exibir os resultados, criando um objeto TextField e incluindo no cenário.

Cole o código no quadro no primeiro frame para ver o resultado (não esqueça de alterar o caminho para o arquivo PHP se necessário):

// ignora espaços em branco do XML
XML.ignoreWhitespace = true;

// objeto XML
var oxml:XML;
// URL onde estão os dados
var urlString:String = 'http://localhost/usuarios.php';
// objeto de requisição
var req:URLRequest = new URLRequest();
// objeto de carregametno de dados
var loader:URLLoader = new URLLoader();

// função que irá analisar o retorno do arquivo PHP
// ou seja, o XML gerado
// aqui você poderá ver o resultado e iteragir conforme o necessário
function analisaXML (e:Event):void {
    // instancia o objeto de XML com os dados enviados
    // do arquivo PHP
    oxml = XML(e.target.data);
    
    // variavel para contar
    var it:int = 0;
    
    // para cada usuario na lista
    for each( var item in oxml.usuario )
    {
        // cria um campo text
        var txt:TextField = new TextField();
        // ajusta a largura
        txt.width = 300;
        // ajusta a altura
        txt.height = 20;
        // coloca o nome do usuario
        txt.text = item.@nome;
        // ajusta a posição em Y
        txt.y = 20 * it++;

        // coloca no container principal (cenário)
        addChild(txt);
    }
}

// diz que o método de requisição é POST
req.method = URLRequestMethod.POST;
// informa a URL a ser consultada
req.url = urlString;

// adiciona o ouvinte ao carregador, dizendo que
// assim que carregar, deverá executar a função analisaXML
loader.addEventListener(Event.COMPLETE, analisaXML);
// carrega os dados
loader.load( req );

Na função "analisaXML", você poderá fazer as ações que forem pertinentes ao seu caso.
Neste exemplo, simplesmente exibi os resultados na tela com um TextField.

@braços e fiquem com Deus!

Deixe seu comentário