Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Gostaria de saber se o pessoal estaria interessado em um tutorial de como instalar e utilizar o AMF com PHP, em AS2 e AS3.
AMF ?
O que seria ?!
Hoje anoite eu posto o tutorial.
AMF é o Flash Remoting, com ele você pode acessar classes php diretamente, podendo utilizar as funções dessas mesmas classes.
Ahh sim
Obrigado :)
Eu não manjo nada com php :P
Bom vamos começar, primeira coisa a se fazer é o download das classes do Flash Remoting (para AS2, pois AS3 já possui suporte nativo):
http://rapidshare.com/files/83849342/mx.zip.html
depois de descompactar o arquivo mx.zip, copie as pastas data, remoting, rpc e services para C:\Documents and Settings\Nome do seu usuário\Configurações locais\Dados de aplicativos\Adobe\Flash CS3\en\Configuration\Classes\mx\, mande substituir todos os arquivos.
Agora é preciso fazer o download do AMFPHP http://sourceforge.net/project/showfiles.p..._id=72483#files.
Documentação e exemplos no endereço: http://www.amfphp.org/
Hospede a pasta do AMFPHP no seu servidor local ou em um de sua preferência. A classe php que será usada nesse exemplo (e todas a que você utilizar com o AMF) deve ser colocada no diretório services do AMFPHP.
Agora vamos aos arquivos que serão utilizados nesse exemplo:
ConexaoAS2.as
// importa as bibliotecas necessarias
import mx.remoting.Service;
import mx.services.Log;
import mx.rpc.RelayResponder;
import mx.rpc.FaultEvent;
import mx.rpc.ResultEvent;
import mx.remoting.PendingCall;
class ConexaoAS2
{
//define o endereço do gateway
private var gateway:String;
// define se tem log ou não
private var log:Log;
//declara o nome da classe php que será chamada
private var classe:String;
// declara o serviço
private var servico:Service;
// construtor
public function ConexaoAS2(_gateway:String,_classe:String)
{
gateway = _gateway;
classe = _classe;
servico = new Service(gateway,log,classe,null,null);
log = new Log;
}
public function get funcoes():Service
{
return servico;
}
}
Crie uma nova aplicação para AS2 (esse exemplo é bem simples sem animação, só vai retornar valores para mostrar a utilização), abra a janela de AS da sua aplicação e cole o seguinte código:
import ConexaoAS2;
import mx.rpc.RelayResponder;
import mx.rpc.FaultEvent;
import mx.rpc.ResultEvent;
import mx.remoting.PendingCall;
// Cotacao nessa linha referesse ao nome da classe php
// importante o nome do arquivo php deve ser o mesmo nome da classe
var teste:ConexaoAS2 = new ConexaoAS2("[http://localhost/amfphp/gateway.php","Cotacao");](http://localhost/amfphp/gateway.php)
function retornoC(re:ResultEvent) trace("Dólar comercial: "+re.result);
}
function retornoP(re:ResultEvent) trace("Dólar paralelo: "+re.result);
}
//função para exibir erros ocorridos
function pc_Erro(re:FaultEvent) {
//re.fault.faultstring é o que retorna de erro do php ou da conexão
trace("Erro: " + re.fault.faultstring);
}
// aqui está sendo acessado as funções da classe php ex. getDolarC()
var pc:PendingCall = teste.funcoes.getDolarC();
pc.responder=new RelayResponder(this,"retornoC","pc_Erro");
var pc:PendingCall = teste.funcoes.getDolarP();
pc.responder=new RelayResponder(this,"retornoP","pc_Erro");
agora a classe php:
Cotacao.php
<?php
class Cotacao
{
private $dolarc;
private $dolarp;
public function __construct()
{
// essa verificação é para segurança, se não for o swf que você criou bloqueia o acesso a classe
if(!eregi("[http://localhost/cotacao.swf",$_SERVER['HTTP_REFERER']))](http://localhost/cotacao.swf) exit;
$this->dolarc = "1,78";
$this->dolarp = "1,85";
}
public function getDolarC()
{
return $this->dolarc;
}
public function getDolarP()
{
return $this->dolarp;
}
}
?>legal hunternh, bem resumido mas já foi o bastante para o pessoal testar,
acho que só faltou um exemplo de como passar um parâmetro do flash para o PHP
[]´s
Isso é bem simples, nesse caso a função php deve estar esperando um valor como parâmetro:
ex.
public function multiplicar($valor,$multiplicador)
{
return ($valor*$multiplicador);
}var pc:PendingCall = teste.funcoes.multiplicar(23,6);
no caso de querer passar vários valores para o php, o ideal é criar um objeto no flash, que será interpretado como um array pelo php:
no flash
var valores = new Object();
valores.nome = "hunternh";
no php será interpretado da seguinte maneira $valores['nome'] que conterá a string "hunternh".Cara, fiz exatamente o que você disse, só coloquei um campo de texto ao invés do trace pra debugar e não acontece nada! Ele não me retorna nada cara! O que pode ser? Onde estou errando?
interface do amfphp: http://www.dotstudio.com.br/amfphp/browser
E ai pessoal!
Então, eu usava muito o amfphp com as2 mas parei de usar por alguns motivos.
O amfphp, não sei se é só comigo tem sérios problemas com as versões de php, posso estar errado, mas sempre acontece algum problema quando a versões de php diferentes.
Mas só tentei com versões 4 e 5, e as versões atualizadas dentro destas como, 4.2... etc.
Achava muito bom, muito fácil trocar dados diretos entre php e flash e conectando ao banco.
Outro coisa muito boa é a troca de arrays! http://forum.imasters.com.br/public/style_emoticons/default/grin.gif
Se alguém que conheça amfphp e puder comentar sobre as coisas acima, por favor, postem, quanto mais informação melhor!
Abraços
Não pude responder antes, mas esse fim de semana pretendo colocar um exemplo no ar, para o pessoal baixar e testar.
Aqui estão os arquivos http://rapidshare.com/files/89647870/AMFPHP_FLASH.rar.html
Hunter, mas você acha viável usar amfphp direto com Flash do que usar xml e php ?
Uma vantagem grande do AMFPHP, roda em HTTPS sem dar problemas.
Com o Actionscript 2 é melhor usar AMFPHP tanto para enviar, quanto para receber dados, ja com o Actionscript 3 temos algumas fica melhor no flash assim:
receber conteudo: XML
enviar coneudo:AMFPHP
enviar e receber:AMFPHP
.
Mas é só você enviar para o php por loader, e ele já retorna do banco a resposta, nada demais, sem precisar jogar qualquer outro arquivo no servidor.
vejo que as vantagens são:
são transformados para o tipo texto para depois ir para o PHP, no retorno a mesma coisa o PHP gera um texto e manda para o flash que tem que converter esse texto para os valores mesmo, no AMF é flash conversando com PHP direto, o legal disso é que é possível tipificar os parâmetros, por isso é possível passar um Array do flash <--> PHP
As Desvantagens são
-Dór de cabeça nos 1º passos [tongue.gif] , mas depois que esta pronto é uma maravilha
eu recomendaria usar o AMF para aplicações média e grandes, se for para passar só umas poucas variáveis seria mais fácil usar o XML mesmo, a não ser que você ja tenha uma estrutura do AMFPHP feita no seu site e funcionando, uma dica legal é criar uma classe no flash para agilizar o desenvolvimento, vou dar uma arrumada aqui na classe que eu uso o posto mais tarde
[]´s
Exemplo prático do uso do AMF, fiz um form para envio de e-mail, não envia o e-mail, mas mostra como enviar os dados para o php e o mesmo retorna se houve ou não um erro:
você esqueceu de mandar o código AS3 ... rs
mas pra qm quiser nesse link aqui explica:
http://www.oscartrelles.com/archives/as3_f...emoting_example
agredecimentos ao eder pelo link ;]
Aqui está o mesmo exemplo em AS2 e AS3:
Falei do as3 ai e esqueci de te agradecer e parabenizar! rs
muito bom e esclarecedor seu tutorial ;)!
Me ajudou inclusive, pois ainda não havia explorado esse recurso embora jah tive-se ouvido falar!
No meu próximo projeto, o AMFPHP jah tah com seu lugarzinho garantido http://forum.imasters.com.br/public/style_emoticons/default/shifty.gif rs
Muito obrigado e parabéns. ^_^ continue sempre assim.
abraços
seria muito bom ter esse tipo de material aqui,
se você puder fazer essa contribuição para o fórum, seria ótimo
[]´s