MAURO ROCHA TAVARES (40 pts)

HELEN TRIOLO (444 pts)

LEANDRO AMANO (83 pts)

DENIS CARAVALHO (85 pts)

SASHA GUDEY (235 pts)

MARLOS ALVES CARMO (90 pts)

GUILHERME SCHEIBE (49 pts)

RÔMULO NUNES (32 pts)

SÁVIO PONTE (39 pts)

MARCELO SIQUEIRA (96 pts)

BÁRBARA TOSTES (64 pts)

PEDRO CLAUDIO (50 pts)
Treinamento PontoFlash de Flash e ActionScript

Como faço para redimensionar dinamicamente (via AS) um campo de texto dinâmico?

Quero inserir um swf dentro de uma apresentação do PowerPoint.

Quando fazer um CD ROM em Flash?

Qual a maneira de colocarmos uma figura (gif) como plano de fundo em um fla?

Tenho duas músicas no site, como crio um botão para mudar de música?

Estou criando um combo works ou o famoso jogo de palavras.

Preciso mudar a direção de um movimento via actionscript.

Como fazer um marquee com Javascript?

Porque um loadVariables não funciona dentro de um movieclip?

Gostaria de arrastar um objeto em apenas uma área determinada da página.

Como bloquear o código fonte HTML de sua página?

Quero saber mais sobre interação Flash X banco de dados (sql mysql etc).

Para que usar onClipEvent?

Preciso que um campo de texto exiba um arquivo txt e como usar o loadVars?
Objetos e classes

Download de arquivos com a classe File Reference

Entendendo como funciona um preloader - Segunda parte

Efeito Blur - Actionscript

MC se movimenta ao contrario do mouse (velocidade, distância)

Relógio analógico

Redimensionar um filme no modo de edição

LoadVariables & OnClipEvent(data).

Elasticidade com ActionScript.

Load Movie into level (nível)

Detecção do FlashPlayer.

Usando XML com Fireworks MX.
Starwars text

Arrays

Ping Pong

Eventos MX

Mouse recorder

Balls 3f

Lighttext

Random block

Tween motion

Pacman

Loop FOR declarando variáveis

Overscroll
HOME | TUTORIAIS
Movimento por meio de actionscript
por Alexandre Porto

Mover um objeto pelo stage com interpolação não é uma tarefa muito difícil de conseguir, mas tem seus limitações. Se analizamos a forma na qual o Flash interpreta os movimentos no stage, chegaremos à conclusão de que um objeto tem que estar num keyframe para aplicar uma interpolação. Colocamos um movieclip no stage no keyframe1, com as coordenadas x=100 e y=100, e outro no keyframe 20, com as coordenadas x=300 e e=100. Agora aplicamos uma interpolação de movimento. O que faz Flash é calcular a diferença de posição entre o keyframe1 e o keyframe 20 e mover o objeto de uma coordenada a outra. Tudo isso e muito mais é possível conseguir também através de programação. Nesse tutorial vamos aprender como fazê-lo.

Quando terminarmos o tutorial deveremos ter algo parecido como isso:

Primero, vamos criar um movieclip com um bola, por exemplo. Colocamos ele no stage e damos o nome de instância no painel "Propriedades de instância", "bola". Necessitamos 3 keyframes na timeline principal para realizarmos o movimento.

Keyframe1

No primeiro keyframe teremos que declarar as variáveis que controlarão a bola. A variável "velocidade" controlará a velocidade do movimento da bola.

velocidade = 5;


Um número maior moverá a bola mais rápido pelo stage. Também necessitamos saber a posição atual da bola. As propriedades de um objeto podem ser lidas através do comando Get Property. Para nosso exemplo necessitamos saber somente a posição do símbolo na coordenada X, pois o movimento será apenas horizontal. Declaramos agora a segunda variável:

xpos = "getProperty ( bola, _x )";

Só nos falta o raio da bola, que em nosso caso será a largura de nosso movieclip dividido por 2. A largura de um objeto é capturada através do comando Get Property e sua propiedade _width (largura):

raio = getProperty ( bola, _width )/2;

Agora podemos passar ao keyframe2 onde estarão as actions que irão mover o objeto pelo stage.

Keyframe2

Aqui, no keyframe2, teremos que ler a posição atual de "bola" e adicionar este valor à nossa variável "xpos" que vai atualizando a cada vez que o movieclip se movimenta. O comando Set Property adiciona o valor de um objeto à variable, em nosso caso X Position:

setProperty ("bola", _x, xpos);


Agora teremos que incrementar a variável "xpos" com "velocidade", para obtermos um novo e dinâmico valor de "xpos":

xpos = xpos + velocidade;


Claro, depois disso teremos que checar se "bola" não se chocou contra a parede, que é no fundo o comprimento do filme. Teremos que incluir uma estrutura condicional If:

if (xpos >=(300-raio) or xpos <=(0+raio)) {
   velocidade = velocidade * -1;
}


Criei esse filme do exemplo com o tamnaho de 300X170 pixels.

Estamos checando se a variável "xpos" é maior ou igual ao comprimento de nosso filme somando ou diminuindo o raio, dependendo da posição da bola. Se a condição é verdadeira (true), será executada a linha2 do código e a variável "velocidade" mudará para seu valor negativo, ou seja, multiplicaremos seu valor por -1. Se a condição If for falsa (false), não será executado o código dentro da condição.

Keyframe3

Depois da comprovação somente nos falta voltar ao keyframe2 e assim o código será executado outra vez (loop) com o valor de "xpos" atualizado.

gotoAndPlay (2);


E para criar um movimento com o clique de um botão?

Podemos adaptar esse mesmo arquivo para isso. Crie uma nova camada e inclua um botão. Podemos aproveirar os comandos do keyframe 2 para dar o movimento a partir do botão, certo? Então a action incluída nele seria apenas:

on (release) {
   gotoAndPlay (2);
}


Não se esqueça de colocar uma ação stop no primeiro keyframe de seu filme.

Para incrementar um pouco mais, criei uma desaceleracão no objeto. Veja no exemplo.

Como?

No primeiro keyframe, altere o valor de "velocidade" para 30 e adicione a declaração da variável "freio".

freio = 1;


No último keyframe você insere as seguintes actions:

freio = freio + 13;
velocidade = velocidade - freio/30;
//esses valores vão variar de acordo com seu filme.
if (velocidade <= 1) {
   velocidade = 1;
}
if (xpos == 300-raio) {
   gotoAndStop (1);
}


Na primeira linha ele incrementa "freio" e depois diminui o valor de "freio/30" de "velocidade". Nas terceiras e quartas linhas, o código apenas impede que o valor de "velocidade" se torne negativo e nas duas últimas, faz com que o filme volte para o primeiro frame. Repare, no segundo exemplo anexo, que eu determinei uma posição fixa para "bola" no primeiro frame.

setProperty ("bola", _x, "30");


Simples não? É claro que você incrementar o que aprendeu aqui para criar outras movimentações etc. Isso é tudo.

Espero que este tutorial tenha sido útil. Até á próxima! Baixe aqui os arquivos exemplo desse tutorial.



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
4 comentários


Comentário de douglas
| 13/5/2011 - 14:29 |
http://http://www.pontoflash.com.br/tutoriais_con.php?autor=

Como mover objetos atraves do actionscript 2.0 , queria atraves de um clique que o objeto fosse lançado



Comentário de douglas
| 13/5/2011 - 14:29 |
http://http://www.pontoflash.com.br/tutoriais_con.php?autor=

hvujbhib



Comentário de TioBastinho
| 8/12/2010 - 15:24 |


Caro Alexandre: Tenho procurado ver quase que diariamente essa sua seção, a procura de resposta do primeiro comentário que fiz. Será que o que estou querendo é tão difícil assim, pois nenhum webdesigner postou nenhum tópico sobre essa questão de girar as peças de um quebra cabeça, a não ser no tuto do flash,(puzzly), mesmo assim de difícil execução. Me disponibilize seu e-mail, que lhe envio um arquivo fla. de teste do quebra cabeça da forma que quero. Muito obrigado pela atenção. Um abraço. TioBastinho



Comentário de TioBastinho
| 5/12/2010 - 12:20 |


Caro Alexandre: Muitíssimo interessante este seu tuto passo a passo, no entanto, gostaria que vc me desse uma dica. è o seguinte: Estou desenvolvendo um quebra cabeça com o actionscript 2.0. O problema é que não conseguí colocar o código certo para que as peças girem com o uso das setas de direção, pois apesar de colocar um código em todas as peças, quando testo apenas a 1ª faz a rotação.Outro código gira todas as peças ao mesmo tempo.Se for possível disponibilize um toto sobre isso. Muitíssimo obrigado pela atenção. Um abraço TioBastinho