Flash AS2 02: Controle de objetos

1. Controle de objetos

Vamos imaginar agora que você quer controlar a posição de um objeto. Quer poder movimentá-lo para a direita ou para a esquerda, para cima e para baixo, através de botões. Como fizemos numa aula anterior, vamos controlar as propriedades de um objeto através de um botão.

2. Interface

Primeiro vamos desenhar a interface: temos que ter quatro instâncias do mesmo botão, uma rotacionada para cada lado.




Content on this page requires a newer version of Adobe Flash Player.

Get Adobe Flash player


Depois um movie clip de uma bola, cuja instância eu batizei de bola.

3. O código

A primeira coisa que precisamos saber é qual a propriedade do movie clip que controla a sua posição. Vamos usar _x para a posição horizontal e _y para a vertical.

Bem, está claro que o desafio é redefinir a posição da bola a cada clicada. Logo de cara fica claro que se usar um código como este

bDir.onRelease = function() {
bola._x = 15;
}

 

estarei atribuindo um valor fixo à posição da bola. Ela vai se mover no primeiro clique mas vai ficar sempre em 30. Ou seja, não vai funcionar!

A solução passa pelo fato de que a cada clique o Flash deve reavaliar a posição da bola para mudá-la. Isto implica em incluir a propriedade da posição da bola não só do lado esquerdo da equação, mas também do direito:

 

bDir.onRelease = function() {
bola._x = bola._x +15;
}

Traduzindo, vamos começar pelo lado direito da equação.

Pegue a propriedade _x do objeto bola, incremente 15 e acumule na propriedade _x de bola. Ótimo, não? O código usa a propriedade _x para avalaiar a posição da bola e também para mudá-la! Agora um detalhe: a linguagem Actionscript aceita mais de uma notação para o mesmo efeito. Estas duas linhas, por exemplo, são equivalentes.

 

i = i + 5;
i += 5;

As duas querem dizer “pegue o valor de i e some 5 e guarde de novo em i”. Assim, se i tinha o valor inicial de, digamos, 7, depois de executar a linha acima, vira 7 + 5, e vira 12. No caso específico do incremento ser 1, aceita-se inclusive a notação i++ ao invés de i += 1.

O código anterior, portanto, também pode ser escrito desta outra forma:

 

bDir.onRelease = function() {
bola._x += 15;
}

Estas duas formas são equivalentes, e produzem exatamente o mesmo efeito.

Para os outros três botões o raciocínio é o mesmo.

4. Segunda versão

O tema desta aula é justamente esta via de mão dupla: você pode usar propriedades (ou variáveis como verá mais tarde) tanto de um lado como de outro da equação, isto é, tanto para avaliar quanto para alterar um objeto.

Vamos partir agora para outra forma de avaliar a posição do objeto na tela.

Agora au gostaria de ter controle do valor numérico da posição do objeto em x e em y através de caixas de texto. Veja abaixo.



Content on this page requires a newer version of Adobe Flash Player.

Get Adobe Flash player


Repare que, ao clicar em algum dos botões, os valores das caixas de texto devem mudar.

O primeiro passo é inserir os dynamic texts. Dynamic texts são caixas de texto que podem mudar o seu conteúdo através de comandos Actionscript. Elas também têm propriedades. A que reflete o seu conteúdo chama-se text.

Assim, se você batizar a caixa de texto de cima de posX, a expressão que reflete o texto dentro dela será posX.text. Sabendo disso, monte a segunda versão do aplicativo.

5. Terceira versão

Da primeira vez que apresentei para os alunos este exercício, um deles me sugeriu o seguinte: e se eu quisesse digitar o valor da posição da bola nas caixas de texto? De acordo com o valor que digitasse, a bola se moveria para a posição correspondente.

Bom, você pode, mas precisa de um botão para dizer ao Flash para pegar o valor da caixa de texto e colocar na propriedade do movie clip.

Ah, sim, um detalhe. Você terá que mudar as caixas de texto de dynamic para input. Assim ela receberá dados digitados pelo usuário e não só valores dados por comandos de ActionScript.

Veja abaixo os três tipos de caixas de texto e suas diferenças no que diz respeito ao ActionScript:

 

curso-as2-tipos-de-caixas-de-texto

 

 

  usuário
altera
ActionScript
altera
static não não
dynamic não sim
input sim sim

Tente digitar um valor nas caixas e clique no botão ao lado.



Content on this page requires a newer version of Adobe Flash Player.

Get Adobe Flash player



 

Agora você me pergunta: para que serve tudo isso? Por enquanto, para aprender ActionScript… Mas, em breve, servirá para fazer aplicativos bem interessantes.

6. Video

Social media & sharing icons powered by UltimatelySocial