NETO LEAL (116 pts)

HELEN TRIOLO (444 pts)

SYDNEY GANHO (60 pts)

GUILHERME SCHEIBE (49 pts)

DEMIS BUCCI (50 pts)

RICARDO TAKAHASHI (180 pts)

KEN AWAMURA (130 pts)

MAURO ROCHA TAVARES (40 pts)

SASHA GUDEY (235 pts)

LUIZ HERRERA (117 pts)

DAAFY (55 pts)

DEN IVANOV (260 pts)
Treinamento PontoFlash de Flash e ActionScript

Queria fazer um movie clip aparecer em posições aleatórias.

É possível modificar um texto de acordo com a data do computador do usuário?

Como reproduzo aquele efeito de espelho?

Tenho dúvidas de como fazer um Load Movie.

Como se usa o "linkage/export this symbol"?

Fiz um arquivo de scroll, mas quando o coloco dentro de um movieclip, não funciona.

Com load movie into target, tem como carregar um SWF dentro de outro SWF?

Como desenhar, simulando dinamicamente a ferramenta caneta do Flash?

O que é um Path Absoluto e um Path Relativo?

Como mudar a cor de um botão no mouse Over?

Dicas sobre os métodos Slice e Splice do objeto Array.

Necessito realizar um questionário com 10 perguntas.

O que vocês sugerem, usar LoadMovie into Level (loadMovieNum) ou into Target (loadMovie)?

Quero saber mais sobre interação Flash X banco de dados (sql mysql etc).
Botão avançar e recuar.

Bolhas flutuantes.

Rave Generation no PhotoShop.

Transparência no Flash.

Jogo dos 7 erros.

Como criar objetos 3D no Fireworks.

Salvando alterações feitas no layout (shared Objects).

Aplicativo Dirigido por Dados com XML

Trace Bitmap.

Troca de cor de imagens

Comunicação Flash-PHp-MySql - Editar banco de dados

GetMySQLData para Flash5 (primeira parte)
Magnetismo

Notícias

Circle

Espiral

Direção do mouse

Tween motion

Menu abre pasta

Regressivo

Texto com pause

Move to point

Blaublau

Texto matrix
HOME | TUTORIAIS
Botão dinâmico via Action Script.
por Marcos José Pinto

Nota do autor: Para acompanhar sem problemas este tutorial é aconselhável ter algum conhecimento básico sobre Action Script, saber criar Movie Clips, nomear suas instâncias e criar botões.

Quando queremos criar um botão e aplicar ao mesmo algum tipo de animação, costumamos apelar para a duplicação de um Movie Clip que contenha um botão. Em cada cópia, modificamos o texto do botão e o comando associado ao evento, um a um.

Funciona, mas para que tanto trabalho se podemos colocar o bom e novo Action Script para trabalhar para nós?

A idéia que apresento aqui é um botão-faz-tudo. Tendo apenas uma cópia do objeto em sua biblioteca, você poderá utilizá-la indefinidas vezes. Para isso, basta acrescentar no script uma condição para cada instância do botão, cujo texto será obtido a partir do nome de instância.

Este botão foi utilizado no site www.compuland.com.br/marcosjp. Eu queria animar os botões, fazendo-os sair de dentro da nave e descer até à base da tela. A maneira mais simples e menos trabalhosa de fazer isso foi a utilização de texto e comandos dinâmicos para definir todos os botões, inclusive do que retorna à animação inicial a partir da "sala dos livros".

Chega de conversa e vamos ao exemplo. No filme acima você vê três botões, cada um com seu texto e cada um com uma função distinta. Os três botões, na verdade, são três instâncias de um Movie Clip.

Montagem do movie-clip-botão.

1. Crie um novo símbolo, marque seu comportamento (behavior) como Movie Clip e, em seu modo de edição, crie as camadas controle, campo e botão.

2. Na camada controle, insira a ação mostrada abaixo.

this.legenda = this._name;

Esta linha cria a variável legenda dentro da instância do Movie Clip (variável local), representada por this, e armazena nesta variável o nome da instância atual do Movie Clip, através da propriedade _name. Repare que há um ponto entre this e os identificadores de variável e propriedade.


figura 1

3. Na camada campo, crie um campo dinâmico associado à variável legenda.

É importante que esta camada fique por cima da camada onde colocaremos o botão, pois o campo dinâmico conterá o texto que definirá a legenda do botão.

4. Na camada botão, coloque o botão (dã!). A figura 1 mostra a estrutura do Movie Clip.

Montagem de um Movie Clip auxiliar.

Para exemplificar o funcionamento dos botões, criei um Movie Clip simples que contém o texto apresentado quando os botões são acionados. Dei lhe o nome de instância "ClipTexto".

1. Crie um novo Movie Clip e, em sua área de edição, crie as camadas ação e texto.


figura 2

2. No primeiro quadro da camada ação, insira uma ação stop ();.

3. Na camada texto, insira keyframes nos quadros 2, 3 e 4.

4. Insira os blocos de texto estático Primeiro, Segundo e Terceiro, colocando-os, respectivamente, nos quadros 2, 3 e 4.


figura 3

A figura 3 mostra a estrutura deste Movie Clip.

Definição do script do botão

A partir do momento em que passamos a lidar com programação, não há uma única maneira "correta" de atingir nossos resultados, mas muitas maneiras possíveis. Então, para ilustrar isto, criei duas versões que fazem exatamente a mesma coisa. A primeira versão é mais óbvia e mais trabalhosa. A segunda é um pouquinho menos óbvia e infinitamente mais simples. Vamos começar pela mais trabalhosa.

Solução com lógica de decisão

Insira o script abaixo no evento do botão:

on (release) {
   if (legenda eq "Primeiro") {
      _root.ClipTexto.gotoAndStop(2);
   } else if (legenda eq "Segundo") {
      _root.ClipTexto.gotoAndStop(3);
   } else if (legenda eq "Terceiro") {
      _root.ClipTexto.gotoAndStop(4);
   }
}

Com este script, ao ser acionado o botão, uma estrutura IF...THEN...ELSE (SE... ENTÃO...SENÃO) testa o conteúdo da variável legenda. Como você viu no início deste tutorial, tal variável recebe o nome da instância do Movie Clip em questão.

Então, na primeira linha do IF, temos

if (legenda eq "Primeiro") {
   _root.ClipTexto.gotoAndStop(2);

Ou seja, se o conteúdo da variável legenda for igual a "Primeiro", a ação subordinada jogará o Movie Clip ClipTexto para o segundo quadro, onde sabemos que se encontra a palavra Primeiro.

As duas linhas seguintes funcionam de maneira análoga. Como você já deve ter percebido, esta solução exige uma nova linha else if para cada novo botão. Então, se forem 15 botões, teremos 15 níveis na estrutura IF. Funciona, mas é muito trabalhoso, o código fica bem grande e confuso e, pior, tudo isto acrescenta alguns bytes ao tamanho do seu SWF. Podemos adotar uma outra solução, bem mais simples e direta - e muito menor. Veja a seguir.

Solução com ação direta por rótulo

Nesta solução vamos usar rótulos no lugar de nomes de quadros para fazer o direcionamento. Só essa mudança já nos permite criar um script absurdamente mais simples. Vejamos porque.

1. Entre na área de edição do Movie Clip que contém os blocos de texto estático.

2. Insira keyframes (quadros-chave) nos quadros 2, 3 e 4 da camada ação.

3. Identifique os rótulos destes quadros com as palavras Primeiro, Segundo e Terceiro, respectivamente.

4. Volte à área de edição do Movie Clip do botão e edite o script. Apague todo o script lá inserido anteriormente (melhor gravar uma cópia antes, para referência).

5. No lugar do script anterior, digite esta única ação:

on (release) {
   _root.ClipTexto.gotoAndStop(Legenda);
}

E é só!!!

Como funciona? Simples: no lugar do número de quadro utilizado no exemplo anterior, o método gotoAndStop utiliza como argumento o conteúdo da variável legenda que, por sua vez, contém o nome da instância do Movie Clip em questão. Assim, o botão que se encontra dentro do Movie Clip Primeiro, por exemplo, enviará a linha do tempo do Movie Clip ClipTexto para o quadro cujo rótulo tenha nome correspondente, ou seja, Primeiro. Com esta solução, cada novo botão inserido deverá ter seu nome de instância relacionado a um rótulo. E mesmo que você precise usar cinqüenta cópias do Movie Clip, o script não precisará sofrer qualquer alteração.

Montagem da cena de teste

Para comprovar o funcionamento deste botão dinâmico, veja como montar a cena:

1. Disponha os três botões na cena como desejar.

2. Nomeie suas instâncias como Primeiro, Segundo e Terceiro.

3. Coloque na cena uma instância do Movie Clip que contém os blocos de texto. Como o primeiro quadro deste Movie Clip não contém qualquer elemento, o Movie Clip aparecerá na cena, apenas no modo de edição, como um ponto branco.

4. Selecione o Movie Clip e nomeie sua instância como ClipTexto

.
figura 4

Agora você já pode rodar o filme e experimentar os botões.

Sugestão: Neste exercício você usou um Movie Clip contendo blocos de texto apenas para testar as ações dos botões. Contudo, se esta for a única intenção de um filme, no lugar dos três blocos de texto você poderá colocar um único campo dinâmico, que receberá o texto da variável legenda, ou mesmo diretamente do nome de instância, com a propriedade _name. Como você pode ver, sempre há espaço para modificações e, o que é melhor, simplificações. Até a próxima!

Faça o download dos exemplos.



Devido à reformulação implementada no site, pode ser que você encontre alguns links quebrados. Por favor, ajude-nos a corrigir eventuais problemas nos informando links quebrados
1 comentário


Comentário de washington
| 16/11/2011 - 01:55 |


penso que voce pode me ajudar! gostaria de saber como faço pra criar um input box, e um botao e uma caixa dynamica, e quando eu colocar um valor na input box e aperta no botao, a caixa dinamica mostre um as variaveis que tenho em um texo.txt ex: se escrevo 1, me mostre o conteudo da variavel que esta no texto.txt &1=bla bla bla. sei que é possivel voce pode me ajudar? sim no texto.txt nao tem só numeros. naples_usa@hotmail.com