Autor: Rodrigo Gonçalves
Flash CS3/ ou superior
Versão AS: ActionScript 3.0
Versão do Player: Flash Player 9
Package: flash.display
Classe: public class Loader
Dificuldade: conhecimentos básicos de funcionamento do Flash, Actionscript 3.0 e lógica de programação.
Fala galera. Tranquilo?
Vamos ver uma técnica bastante simples, mas ótimo exercício. No exemplo vamos controlar a timeline de um arquivo swf externo usando AS3.
Arquivos para download estão no final desse exemplo.
Se você ainda não conhece muito sobre carregamento Loader AS3, confere esses 2 artigos básicos sobre esse tema:
Carregar imagem externa com Classe Loader AS3.
Manipulando carregamento externo com AS3.
Índice
1. Criando arquivo externo;
2. Criando arquivo carregador;
3. Download.
1. Criando arquivo externo
Criamos nosso arquivo externo na versão AS3, contendo uma animação qualquer na timeline principal. Salve este arquivo em uma pasta com nome arquivo_externo.fla. Assim que terminar sua animação, gere um arquivo swf (atalho Ctrl + Enter pra gerar o swf). Apenas isso. Nada de código nesse arquivo externo. Vamos controlar a timeline desse arquivo com outro arquivo principal que vamos criar a seguir.
No meu exemplo, criei uma estrela, converti ela em um MovieClip e fiz animação qualquer na timeline ficando em loop. Gerei meu arquivo SWF desse exemplo.
Arquivo SWF: arquivo_externo.swf, uma estrela animada em loop na timeline principal.
2. Criando arquivo carregador
Agora criamos outro arquivo na versão AS3, salve com nome carregador.fla na mesma pasta do seu arquivo_externo.swf criado anteriormente.
Na 1º e única camada desse arquivo carregador, abra o painel de Actions (F9) e insira o seguinte código:
O código está brevemente comentado.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | /***************** * VARIÁVEIS * crios todas variaveis aqui ****************/ var arquivoExternoUrl:URLRequest; //endereço do arquivo externo var carregador:Loader; //recebe conteudo do arquivoURL var arquivoExternoMc:MovieClip; //vai receber o conteudo do Carregador(Loader) var ligaDesliga:Boolean; //responsavel por ligar e desligar animação //começa tudo aqui iniciaPrograma(); /***************** * FUNÇÕES * crios todas funções aqui separada pra cada tarefa ****************/ //inicia instancias das variaveis e cadastra valores function iniciaPrograma():void { ligaDesliga = false; //variavel começa desligada arquivoExternoUrl = new URLRequest("arquivo_externo.swf"); //inicia endereço do arquivo externo carregador = new Loader(); //inicia loader carregador.load(arquivoExternoUrl); //carregado arquivo externo carregador.contentLoaderInfo.addEventListener(Event.INIT, quandoIniciadoNoStage); //cadastra evento addChild(carregador); //deixa o loader visivel no stage } /*função de evento Event.INIT, faz alguma coisa quando o arquivo for carregado e iniciado no stage, isso garante evitar erros de acesso ao arquivo externo antes que ele seja carregado por completo*/ function quandoIniciadoNoStage(e:Event):void { trace("* Carregou o arquivo externo, faz algo com ele!"); cadastraConteudoNoMovieClip(); } /*função de evento MouseEvent.CLICK, que comunica com arquivo externo carregado*/ function quandoClicarArquivoExternoMc(e:MouseEvent):void { ligaDesligaAnimacao(); } /*Cadasrto e converto o conteudo do Loader em uma variavel MovieClip e manipulo arquivo externo como se fosse um MovieClip comum no stage*/ function cadastraConteudoNoMovieClip():void { /*falo que o conteudo do Loader deve agir como MoveiClip também poderia usar o método contrutor MovieClip(carregador.content);*/ arquivoExternoMc = carregador.content as MovieClip; arquivoExternoMc.stop(); //para animação pra não começar quando carregado arquivoExternoMc.buttonMode = true; //aplico para parecer "mãozinha" de clique arquivoExternoMc.addEventListener(MouseEvent.CLICK, quandoClicarArquivoExternoMc); //aplico evento de clique } //liga e desliga animação function ligaDesligaAnimacao():void { //inverto valores de liga(true) e desliga(false) cada vez que aciona ligaDesligaAnimacao() ligaDesliga = !ligaDesliga; /*verifica se esta variavel ligaDesligaAnimacao está ligada(true) ou desligada(false)*/ if(ligaDesliga) { trace("* Clicou no arquivo externo, play timeline desse arquivo"); arquivoExternoMc.play(); } else { trace("* Clicou no arquivo externo, stop timeline desse arquivo"); arquivoExternoMc.stop(); } } |
Basicamente, carrega o arquivo externo e controlamos a timeline desse arquivo carregado. Veja exemplo abaixo. Clique na estrela pra dar um play ou parar a animação.
Arquivo SWF: carregador.swf, carrega o arquivo arquivo_externo.swf, e controlamos sua timeline.
Você pode ir muito mais além que isso. Um outro exemplo simples, seria criar funções diretamente na timeline principal desse arquivo externo, algo com nome minhaFuncaoQualquer(). Depois, poderia executar facilmente essa função no meu arquivo principal. Lembrando que devemos antes carregar por completo e iniciar o objeto no stage com Event.INIT. Assim, conseguimos cadastrar o conteúdo em um objeto MovieClip e chamar/executar a função algo como arquivoExternoMc.minhaFuncaoQualquer();
3. Download
Arquivos desse exemplo pra download.
Obs: Você precisa ter Flash CS3 ou superior para trabalhar com ActionScript 3.
Abraço e até a próxima.
Rodrigo Gonçalves
O Conteúdo do Alvo Web Developers está licenciada sob uma Creative Commons Atribuição-Uso Não-Comercial-Compartilhamento pela mesma Licença 2.5 Brasil License.