Você está na página 1de 11

CURSO

ActionScript com Flash CS5

MÓDULO
07

www.ginead.com.br
1
Programação ActionScript com Flash CS5

Todos os direitos reservados para Alfamídia LTDA.

AVISO DE RESPONSABILIDADE

As informações contidas neste material de treinamento são distribuídas “NO ESTADO EM


QUE SE ENCONTRAM”, sem qualquer garantia, expressa ou implícita. Embora todas as
precauções tenham sido tomadas na preparação deste material, a Processor Alfamídia
LTDA. não têm qualquer responsabilidade sobre qualquer pessoa ou entidade com respeito
à responsabilidade, perda ou danos causados, ou alegadamente causados, direta ou
indiretamente, pelas instruções contidas neste material ou pelo software de computador e
produtos de hardware aqui descritos.

2
Programação ActionScript com Flash CS5

Adobe Flash CS5 – Programação ActionScript

UNIDADE 7 COMUNICAÇÃO COM O SERVIDOR


7.1 SOLICITAR, RECEBER E ENVIAR DADOS PARA UM SERVIDOR ATRAVÉS DE AMF

3
Programação ActionScript com Flash CS5

Unidade 7
Comunicação com o Servidor
7.1 Solicitar, Receber e Enviar Dados para um Servidor
através de AMF.
AMF (action message format) é uma forma de comunicação entre o Flash player e
um servidor remoto. AMF codifica chamadas remotas a procedimentos (métodos
em classes remotas) que é compactada em uma representação binária e enviada
através de HTTP/HTTPS ou RTMP/RTMPS (no caso do Flash Media Server).
Este formato é mais rápido que XML e troca de dados através de Strings (como
URLLoader ou URLVariables). AMF, na verdade, também é mais rápido que
outros métodos, como Ajax [http://www.jamesward.org/census].
Para utilizar AMF é preciso ter instalado, no servidor, uma biblioteca que serialize
e deserialize os dados. No caso do php, utiliza-se a biblioteca amfphp
[http://www.amfphp.org], que utiliza o formato AMF3.
Além da excelente performance, o uso de AMF traz um benefício adicional da
portabilidade, pois é possível alterar os métodos remotos (até mesmo o próprio
servidor) sem maiores prejuízos ao código.

Exercício 1: Olá mundo AMF!


1- Inicie o servidor wamp e teste (acessando localhost ou 127.0.0.1). Se não
conseguir, encerre o IIS.
2- Antes de começar, iremos instalar a biblioteca AMFPHP 1.9. Os procedimentos
para isso variam de caso a caso, de acordo com a linguagem que será utilizada.
3- Copie a pasta amfphp e cole dentro da pasta www.
4- Abra o arquivo services/OlaMundo/Ola.php
5- Veja que, além do método construtor há um método digaOi, que retorna a string
“Olá mundo AMF!”.
6- Crie um arquivo .fla com o nome de ex7-1 e salve-o na pasta unidade 7.
7- Atribua a classe HelloAMF como classe do documento.
8- Crie um arquivo .as com o nome de HelloAMF, que descende de Sprite, declare
a classe e o método construtor para que fiquem com o mesmo nome do arquivo e
importe a classe base.
9- Importe as classes ObjectEnconding, Responder e NetConnection.

4
Programação ActionScript com Flash CS5

import flash.net.ObjectEncoding;
import flash.net.NetConnection;
import flash.net.Responder;
10- Declare uma variável pública do tipo NetConnection (abre uma comunicação
com o servidor).
public var service:NetConnection =
new NetConnection();
11- No construtor, execute o método connect e indique o endereço do arquivo
gateway.php.
service.connect("/amfphp/gateway.php");
12- Execute o método call deste NetConnection. Passe como parâmetros o método
remoto que deseja executar e uma instância de Responder, que vai definir os
comportamentos padrão para sucesso e falha no recebimento da resposta.
service.call("OlaMundo.Ola.digaOi",
new Responder(resultHandler, faultHandler));
13- Crie um método para o caso de sucesso no recebimento dos dados.
public function resultHandler(result:String):void {
trace(result);
}
14- Crie um método para o caso de falha no recebimento dos dados.
public function faultHandler(fault:String):void {
trace(fault);
}
15- Compile.

Exercício 2: Enviando e recebendo dados


1- Abra o arquivo services/SendingData/GetnSend.php
2- Veja que, além do método construtor há um método getsend, que retorna uma
String enviada pelo Flash acrescida de outra String.
3- Crie um arquivo .fla com o nome de ex7-2 e salve-o na pasta unidade 7.
4- Atribua a classe SendingData como classe do documento.

5
Programação ActionScript com Flash CS5

5- Crie um arquivo .as com o nome de SendingData, que descende de Sprite,


declare a classe e o método construtor para que fiquem com o mesmo nome do
arquivo e importe a classe base.
6- Importe as classes ObjectEnconding, Responder e NetConnection.
import flash.net.ObjectEncoding;
import flash.net.NetConnection;
import flash.net.Responder;
7- Declare uma variável pública do tipo NetConnection (abre uma comunicação
com o servidor).
public var service:NetConnection =
new NetConnection();
8- No construtor, execute o método connect e indique o endereço do arquivo
gateway.php.
service.connect("/amfphp/gateway.php");
9- Execute o método call deste NetConnection. Passe como parâmetros o método
remoto que deseja executar e uma instância de Responder, que vai definir os
comportamentos padrão para sucesso e falha no recebimento da resposta. Defina o
terceiro parâmetro, que são os dados que serão enviados por AMF para o método
remoto.
service.call("SendingData.GetnSend.getsend",
new Responder(resultHandler, faultHandler),
"Gabriela");
10- Crie um método para o caso de sucesso no recebimento dos dados.
public function resultHandler(result:String):void {
trace(result);
}
11- Crie um método para o caso de falha no recebimento dos dados.
public function faultHandler(fault:String):void {
trace(fault);
}
12- Compile.
Envio de arquivos para um servidor
Enviar arquivos para um servidor é uma ação bastante comum, principalmente em
aplicativos que funcionam como gerenciadores de conteúdo.

6
Programação ActionScript com Flash CS5

No AS3 há duas classes que tratam deste tema: FileReference e FileReferenceList.


A primeira, e que será objeto de atenção neste curso, envia um arquivo por vez
para o servidor.

Para fazer o envio do arquivo é necessário um script no servidor. O Flash


Player não pode fazer operações de transferência de arquivos. Neste curso, será
usado php para fazer o upload.

Exercício 3: Enviando arquivos para um servidor


1- Abra o arquivo unidade6/upload.php e veja que ele aponta para a pasta
uploadedFiles. É para lá que os arquivos deste exercícios serão enviados.
2- Crie um arquivo .fla com o nome de ex7-3 e salve-o na pasta unidade 7.
3- Atribua a classe Upload como classe do documento.
4- Insira um componente Button (Window > Components) no palco, e remova-o
em seguida (o objetivo é ter os assets na biblioteca).
5- Crie um arquivo .as com o nome de Upload, que descende de Sprite, declare a
classe e o método construtor para que fiquem com o mesmo nome do arquivo e
importe a classe base.
6- Importe as classes seguintes:
FileReference – cuidará do envio
URLRequest – aponatrá para o php e fará o envio de dados
Event – eventos do FileReference
MouseEvent – eventos do mouse (clique no botão)
Button – o botão

import flash.net.FileReference;
import flash.events.Event;
import flash.net.URLRequest;
import flash.events.MouseEvent;
import fl.controls.Button;

7- Crie uma variável pública para o FileReference (neste exercício se utiliza


fileRef).

7
Programação ActionScript com Flash CS5

public var fileRef:FileReference =


new FileReference();
8- Crie uma variável pública para o Button (neste exercício se utiliza senButton).
public var sendButton:Button= new Button();
9- No construtor, dê ao Button o label “Envia arquivos”.
sendButton.label="Enviar arquivo";
10- Coloque-o no palco.
addChild(sendButton);
11- Registre-o para responder ao evento clique do mouse, disparando o método
onClick.
sendButton.addEventListener(MouseEvent.CLICK, onClick);
12- Defina o método onClick e faça-o chamar o método browse de FileReference.
public function onClick(MouseEvent:Event):void{
fileRef.browse();
}
13- No contrutor, registre o FileReference para responder aos eventos
COMPLETE e SELECT, disparando, respectivamente, os métodos onComplete e
onSelect.
fileRef.addEventListener(Event.COMPLETE,
completeEvent);
fileRef.addEventListener(Event.SELECT, selectEvent);
14- Defina o método onComplete e faça-o imprimir na tela a String “Enviado”.
public function completeEvent(event:Event):void {
trace("Enviado");
}
15- Defina o método onSelect, e dentro dele:
 Declare uma variável String com o conteúdo “Filedata” (neste exercício se
utiliza param).
 Declare uma variável do tipo URLRequest e passe ao construtor o
endereço do arquivo php que fará a transferência (neste exercício se utiliza
req).
 Execute o método upload de FileReference, passando como parâmetros
param, req e false.
public function selectEvent(event:Event):void{

8
Programação ActionScript com Flash CS5

var param:String = "Filedata";


var req:URLRequest =
new URLRequest('http://localhost/upload.php');
fileRef.upload(req, param, false);
}
16- Compile e veja o conteúdo da pasta uploadedFiles.

Exercício 4: Mostrando uma barra de progresso e o nome do arquivo


que está sendo enviado.
1- Salve o arquivo ex7-3 como ex7-4.
2- Defina a classe do documento como UploadProgress.
3- Salve Upload como UploadProgress e modifique o nome da classe e do método
construtor para que fiquem com o mesmo nome do arquivo.
4- Arraste um componente ProgressBar (Window > Components) no palco, e
remova-o em seguida (o objetivo é ter os assets na biblioteca).
5- Importe as classes ProgressBar e Progressevent.
import flash.events.ProgressEvent;
import fl.controls.ProgressBar;
6- Declare uma variável pública para a ProgressBar (neste exercício se utiliza pb).
public var pb:ProgressBar=new ProgressBar();
7- No construtor, defina a faixa de progresso da ProgressBar de 0 até 100.
pb.setProgress(0, 100);
8- Defina o y da Progressbar como 50 e coloque-a no palco.
pb.y=50;
addChild(pb);
9- Defina a propriedade source de PorgressBar como o FileReference.
pb.source=fileRef;
10- Registre o FileReference para responder ao evento de progresso PROGRESS,
disparando o método progressEvent.
fileRef.addEventListener(ProgressEvent.PROGRESS,
progressEvent);
11- Defina o método progressEvent, e nele execute o método setProgress da
ProgressBar e passe os parâmetro bytesLoaded e bytesTotal do evento.

9
Programação ActionScript com Flash CS5

public function progressEvent(event:ProgressEvent):void


{
pb.setProgress(event.bytesLoaded,
event.bytesTotal);
}
12- Compile e teste com um arquivo de tamanho médio.

Próximos Passos
Nesta unidade estudamos como receber e fazer o envio de dados para um servidor
e também como enviar arquivos. Estas são duas ações bastante comuns. O AS3
implementa mecanismos para desempenhar estas funções em que seja necessário
contato com os códigos remotos. Apenas é preciso fornecer a localização deles.
Este modelo garante bastante independência, pois permite liberdade de escolher
que tipo de tecnologia de servidor utilizar.
Na próxima unidade será iniciada a discussão da orientação a objetos. Até o
presente ponto, sabemos apenas como definir um pacote, classes e métodos e
propriedades públicas. Com um pouco mais de informação seremos capazes de
construir projetos maiores.

10
Semeando Conhecimento

Você também pode gostar