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:
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!