filip_e Posted June 17, 2005 at 10:19 PM Report Share #1075 Posted June 17, 2005 at 10:19 PM Introdução Este tutorial mostra como criar um site básico sem nada no palco. Isto envolverá o carregamento dinâmico de JPEGs e a criação de movieclips via ActionScript. Algumas coisas colocadas aqui serão avançadas mas eu seguirei por elas passo a passo. Primeiros passos Vou começar a dizer que todos os códigos AS deste tutorial devem ser colocados no primeiro e único frame do seu filme. Não temos arquivo para download, pois os únicos usados são 4 imagens JPG e um MP3, além do código indicado. Carregue o Flash e configure o tamanho do palco para 600 X 400. Configure a velocidade de projecção (frame rate) para 21 e escolha você mesmo a cor do fundo. Salve seu arquivo como index.fla. Agora vamos entrar em uma coisa nova e interessante no MX - criar movieclips e campos de texto via ActionScript. Dê o nome de "acoes" a uma (e única) camada e cole esse código no primeiro quadro: // permite que o FlashPlayer reconheça acentos e cedilha System.useCodePage = true; //crio um campo de texto dinâmico com seus parâmetros _root.createTextField("campo",20,50,50,200,300); campo.background=true; campo.border=true; campo.backgroundColor=0xFFFFFF; // branco campo.borderColor=0x000000; // preto campo.multiline=true; campo.wordWrap=true; campo.variable="meuTexto"; // crio um objeto Textformat meuFormato = new TextFormat(); meuFormato.font = "Arial"; meuFormato.size = 12; meuFormato.color=0x000000;// preto // aponto o formato para nosso campo de texto campo.setNewTextFormat(meuFormato); Explicando o código Este tem muitas acções. Vamos examiná-las. _root.createTextField("campo",20,50,50,200,300); Isto cria um campo de texto em branco, dá a ele o nome de instância de campo, posiciona-o na profundidade de 20 (profundidade é parecida com camadas, de certo modo - somente fique prevenido de que, se você posicionar alguma coisa a mais na mesma profundidade (20) seu campo de texto será removido), coloque o canto superior esquerdo de nosso campo de texto em 50 no eixo x e 50 no y, e então lhe dê uma largura de 200 e uma altura de 300. Nas próximas 6 linhas, determino somente alguns parâmetros que controlam a aparência do nosso campo de texto - estas devem ser bastante auto-explicativas. Depois disso associaremos ao nosso campo de texto a variável meuTexto. meuFormato = new TextFormat(); Isto cria um objecto em formato texto (textFormat). Podemos então configurar todo o conjunto de parâmetros em nosso objecto em formato texto (podemos ver 3 destes parâmetros nas próximas 3 linhas) e então criar dinamicamente um campo de texto formatando-o com nosso objecto TextFormat (que acontece na última linha). Salve seu Fla e teste seu filme. Verá seu campo de texto criado no palco exactamente onde deseja. O problema é que não tem texto. Vamos colocar algum nele. Arquivo de texto Abra um programa editor de texto como o notepad, abra um novo documento e cole nele este texto: meuTexto=Bem-vindo ao meu site dinamicamente criado. Eu sou um Deus em actionscript. Por favor, aprecie sua estadia.& Notará que meuTexto também é o nome da variável que nós demos ao nosso campo de texto dentro do Flash. Salve o arquivo como arquivo.txt dentro da mesma pasta. De volta ao Flash, adicione esta acção debaixo de todas as outras: // carregar nosso texto loadVariables("arquivo.txt", "_root"); Isto carregará nosso arquivo de texto na linha de tempo principal. Porque nosso campo de texto está localizado na linha de tempo principal (_root) e tem um nome de variável de meuTexto, ele se mostrará automaticamente sempre que nosso arquivo de texto disser meuTexto é igual a alguma coisa. Teste seu filme novamente e verá o novo texto mostrado - pode não parecer muito bonito, mas servirá por agora. Criando movieclips dinamicamente Assim, nós criamos um campo de texto via código AS - agora vamos fazer o mesmo com alguns movieclips (os quais nós, na verdade, estaremos usando como botões!) Cole este grupo de acções debaixo das outras: // criando nossos botões for (i=1; i<5; i++) { _root.createEmptyMovieClip("botao"+i, 100+i); _root["botao"+i].lineStyle(2, 0x000000); _root["botao"+i].beginFill(0xFF0000) _root["botao"+i].moveTo(0, 0); _root["botao"+i].lineTo(50, 0); _root["botao"+i].lineTo(50, 50); _root["botao"+i].lineTo(0, 50); _root["botao"+i].lineTo(0, 0); _root["botao"+i]._x = 250+ (i*60); _root["botao"+i]._y = 25; } Explicando o código Novamente, vamos através dele bit por bit. for(i=1;i<5;i++){ Isto é um loop for e faz o Flash repetir todo o código debaixo dele 4 vezes - com nossa variável i aumentada por 1 a cada vez. Vamos analisar esta linha um pouco mais. No começo do loop for configuramos o valor inicial de nossa variável i (i=1). Óptimo, assim i=1 - e agora? Agora dizemos ao Flash que queremos que ele continue o loop for até que certa condição seja encontrada - i<5. Dizemos então ao Flash o que fazer a cada vez que o código dentro do loop for for completado - i++. Isto é o mesmo que dizer "tome o valor corrente de i e aumente i em 1". Assim, o Flash vai ao loop for e diz "agora então deixe-me ver, se aparecer aquele i=1 que todos sabemos ser menor do que 5, então posso ir em frente e rodar todo este código contido neste loop for aqui. Assim, ele roda através de todo o código dentro do loop for e quando chega ao final aumenta i em 1 e diz "parece que i permanece menor do que 5... Vou rodar através de todo este código novamente". O Flash continua a falar com ele mesmo e a rodar o código no nosso loop for até que eventualmente i=5 e ele diz "deixou de ser menor do que 5... Terminei com este loop!". Como (eu espero) pode ver - loops for são muito poderosos e poupadores de tempo real. Certo, vamos dar uma olhada no resto desse código. _root.createEmptyMovieClip("botao"+i, 100+i); Isto cria um movieclip em branco em nossa linha de tempo principal. Dependendo do que rode através do loop for, o novo movieclip terá um nome de instância de botao1 ou botao2, etc e será colocado numa profundidade de 101 ou 102, etc. Ok, assim temos um movieclip em branco, mas nós queremos traçar alguma coisa nele - uma caixa, por exemplo. As próximas 7 linhas do código fazem exactamente isto. Nós não temos realmente tempo de examinar detalhes neste momento sobre a nova API de desenho do MX. Somente fique ciente de que o código ali traça 4 linhas com largura de 2, de cor preta lineStyle(2, 0x000000) e então preenche com vermelho beginFill(0xFF0000). Então as últimas 2 linhas simplesmente posicionam nossos novos movieclips no palco. _root["botao"+i]._x=250+ (i*60); _root["botao"+i]._y=25; Assim, a primeira vez que o Flash segue através do loop for, cria um novo movieclip com um nome de instância de botao1 e o posiciona no palco numa posição x de 310 e numa posição y de 25. A segunda vez que ele seguir através do loop for, criará um novo movieclip com nome de instância de botao2 e o posicionará no palco numa posição x de 370 e numa y de 25. Isso é um código bem sério. Não se stress se ele não fizer sentido de imediato. Teste seu filme. Deve ver 4 quadrados no canto superior direito. Elas devem ser vermelhas com bordas pretas. Assim, temos 4 movieclips no palco com nomes de instância de botao1, botao2, botao3 e..., claro botao4. Outra coisa nova no Flash MX é que nós podemos agora atribuir acções a botões movieclips, como onRelease - veremos isto em um segundo. Primeiro vamos criar novas variáveis em nosso arquivo de texto que serão carregados por dois de nossos botões. Volte ao seu arquivo.txt e adicione mais essas linhas: &meuTexto1=este é o texto que será carregado quando o usuário clicar no botão1.& &meuTexto2=Eu sou mais um texto. Na verdade não queria estar aqui, mas tenho que estar porque o usuário clicou no botão2 - posso ir pra casa agora?& De volta ao Flash Agora, de volta ao Flash, adicione esta acção debaixo de todas as outras: botao1.onRelease = function() { meuTexto = meuTexto1; }; botao2.onRelease = function() { meuTexto = meuTexto2; }; Como pode ver, demos acções a dois dos nossos movieclips. O Flash gentilmente responde mudando o cursor do mouse para o dedo quando o usuário passar com ele sobre os quadrados, permitindo assim que clique sobre elas. Teste seu filme e clique nos 2 botões mais à esquerda. Deverá ver os 2 novos textos exibidos no seu campo de texto. Inserindo imagens Bem, isto tudo é muito fixe, mas nós queremos algumas imagens. Pegue 4 fotos, recorte e redimensione todas até que fiquem com uma largura de 100 pixels de largura por 150 pixels de altura. Salve todas como JPEGs e certifique-se de que a caixa "progressive" ("progressiva") não esteja marcada. Salve todas as quatro imagens na mesma pasta e nomeie-as imagem1.jpg, imagem2.jpg, etc. Bom. Outra característica mais que é nova no MX é que pode carregar JPGs e outras coisas enquanto roda. Vamos fazer isto agora. Cole estas ações debaixo das outras: _root.createEmptyMovieClip("alvoFoto1", 200); _root.createEmptyMovieClip("alvoFoto2", 201); alvoFoto1._x=300; alvoFoto1._y=200; alvoFoto2._x=450; alvoFoto2._y=200; loadMovie("imagem1.jpg","alvoFoto1"); loadMovie("imagem2.jpg","alvoFoto2"); Vamos dar uma olhada nestas ações As primeiras 2 linhas cria 2 novos movieclips (como antes) e lhes dá nomes de instância de alvoFoto1 e alvoFoto2. As próximas quatro linhas somente posicionam nossos novos movieclips no palco. Nas últimas 2 linhas verá a acção loadMovie. O Flash MX permite que nós carreguemos jpgs do mesmo modo que já podia carregar arquivos swf. Neste caso, estamos carregando cada imagem dentro de um alvo movieclip (ao invés de um nível) e o Flash alinha o canto superior esquerdo de nossas imagens com o ponto de registro dos movieclips alvoFoto que acabamos de criar. Salve seu filme e então teste-o. Grande! Agora vamos adicionar acções nos nossos 2 botões finais, o que permitirá ao utilizador mudar as imagens exibidas. Adicione isto abaixo de todas as outras ações. imagem1Loaded = true; imagem2Loaded = true; botao3.onRelease = function() { if (imagem1Carregada == true) { loadMovie("imagem3.jpg", "alvoFoto1"); imagem1Carregada = false; } else { loadMovie("imagem1.jpg", "alvoFoto1"); imagem1Carregada = true; } }; botao4.onRelease = function() { if (imagem2Carregada == true) { loadMovie("imagem4.jpg", "alvoFoto2"); imagem2Carregada = false; } else { loadMovie("imagem2.jpg", "alvoFoto2"); imagem2Carregada = true; } }; Vamos ver o código com mais calma imagem1Carregada=true; imagem2Carregada=true; Simplesmente cria um par de variáveis. Em seguida diremos ao Flash o que fazer se o botao3 for clicado. Isto, no entanto, é um pouco mais complicado. Queremos que o Flash primeiramente verifique se uma condição é verdadeira ou não e então faça uma das duas coisas de acordo. Neste exemplo, nós verificamos para ver se a imagem1 está carregada (via nossa variável imagem1Carregada). Se estiver, então o Flash carregará a imagem3 dentro da nossa alvoFoto1 e configurará nossa variável imagem1Carregada para falso. Se ela não for, então o Flash carregará a imagem1 dentro da alvoFoto1 e configurar a variável imagem1Carregada para verdadeiro. O que isto significa é que pode ficar clicando no botão repetidamente e o Flash irá carregando imagens alternadamente. O código para o botao4 faz a mesma coisa. Teste seu filme e clique em todos os botões. Quase feito... Inserindo áudio Vamos introduzir algum áudio. O Flash MX permite que carreguemos dinamicamente mp3s e é justamente isto que vamos fazer. Copie seu mp3 favorito na mesma pasta. Mude o nome do seu arquivo mp3 para arquivo.mp3. Acrescente estas acções sob todas as outras. mySound=new Sound(); mySound.loadSound("arquivo.mp3",true); mySound.start(0,0); A linha 1 cria um novo objecto som. A linha 2 carrega nosso arquivo mp3 externo dentro deste objecto som e configura streaming (transmitir ininterruptamente) para verdadeiro. A linha 3 inicia nosso som. Teste seu filme. Se o som não funcionar, então tente um arquivo mp3 diferente. OK, penso que isto ja é bastante... Espero que possa ver algumas vantagens na utilização das capacidades "dinâmicas" do Flash MX (não menos de qual é a facilidade na qual pode mudar áudio, imagens e texto sem ter até mesmo que abrir seu fla). Cumps. Link to comment Share on other sites More sharing options...
deathseeker25 Posted June 17, 2005 at 10:21 PM Report Share #1076 Posted June 17, 2005 at 10:21 PM Imparável...sem mais palavras.... Link to comment Share on other sites More sharing options...
melSpeedl.ine Posted June 17, 2005 at 10:24 PM Report Share #1077 Posted June 17, 2005 at 10:24 PM (tou a ver que ele levou a cena do 13º mês a peito) LOL como diz aqui o Death... que mais dizer??? Link to comment Share on other sites More sharing options...
febra Posted June 17, 2005 at 10:47 PM Report Share #1084 Posted June 17, 2005 at 10:47 PM Bem eu só queria dar os meus parabéns ao filip_e porque realmente esta aqui mais um tutorial fantástico. Tenho visto posts teus e são sempre muito bons. Link to comment Share on other sites More sharing options...
filip_e Posted June 17, 2005 at 10:53 PM Author Report Share #1085 Posted June 17, 2005 at 10:53 PM deathseeker25, melSpeedl.ine, febra Obrigadão! O importante e enriquecer o forum 🙂 Link to comment Share on other sites More sharing options...
Sutcha Posted June 18, 2005 at 11:12 AM Report Share #1094 Posted June 18, 2005 at 11:12 AM Tá mesmo 5* tutorial tá excelente 🙂 www.sutchamos.blogspot.com Link to comment Share on other sites More sharing options...
Gurzi Posted June 18, 2005 at 01:16 PM Report Share #1097 Posted June 18, 2005 at 01:16 PM Parabéns Link to comment Share on other sites More sharing options...
capitaofantasma Posted May 26, 2006 at 03:23 PM Report Share #29605 Posted May 26, 2006 at 03:23 PM a seguinte parte do código não me foi aceite pelo flash pro 8 mas editando esta tudo correu as mil maravilhas 😁 // permite que o FlashPlayer reconheça acentos e cedilha System.useCodePage = true; alterando para // permite que o FlashPlayer reconheça acentos e cedilhaSystem.useCodepage= true; Link to comment Share on other sites More sharing options...
keim Posted September 10, 2006 at 06:32 AM Report Share #49397 Posted September 10, 2006 at 06:32 AM tutorial 5* Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now