Estruturas condicionais

Estruturas condicionais nos permitem tomar ações baseando-se na avaliação de condições.

Imaginemos, por exemplo, um website de comércio eletrônico. Em uma determinada sessão, teríamos a listagem de produtos, como acontece por exemplo no mercado livre. Podemos desejar que se um produto não tiver imagem, uma imagem padrão seja exibida.

Algo como:

se o produto atual tem imagem então
- exiba a imagem do produto atual
se não
- exiba a imagem padrão
fim

Essa é a forma como devemos pensar as condições que vão compor o nosso projeto. O equivalente a essa lógica, em Action Script, seria:

//...

// Verificamos se a propriedade imagem do objeto que representa o produto
// está definida.
if (produtoAtual.imagem != null)
{
	// Adicionamos a imagem ao local onde a imagem deve aparecer.
	fotoProduto_mc.addChild( produtoAtual.imagem );
}
else
{
	// Adicionamos a imagem padrão ao local onde a imagem deve aparecer.
	fotoProduto_mc.addChild( imagemPadrao );
}

//...

Na linha 5, utilizamos o operador “!=” para verificar a condição de diferença. Tal trecho de código equivale a avaliação da condição:

“imagem do produto atual diferente de nulo”

Utilizamos o valor null (nulo) para verificar se a instância de um objeto, que não seja primitivo, está definida (iniciada).  Sempre que criamos uma variável ela possuirá um valor padrão, até que este seja alterado por nós. Veja na tabela a seguir:

Tipo                                         Valor padrão
————————————————-
String                                           null
int e Number                             0 (zero)
Boolean                                      false
Objetos não primitivos                 null

Para entender melhor, execute o código a seguir:

// Cria uma variavel do tipo boolean (tipo primitivo).
var variavelBooleana: Boolean;

// Cria uma variavel do tipo int (tipo primitivo).
var variavelInteira: int;

// Cria uma variavel do tipo String (tipo primitivo).
var variavelTextual: String;

// Cria uma variavel do tipo MovieClip (tipo não primitivo).
var variavelMovieClip: MovieClip;

// Exibe o valor inicial da variável tipo boolean.
trace("O valor inicial da variável boolean é " + variavelBooleana);

// Exibe o valor inicial da variável tipo int.
trace("O valor inicial da variável int é " + variavelInteira);

// Exibe o valor inicial da variável tipo String.
trace("O valor inicial da variável String é " + variavelTextual);

// Exibe o valor inicial da variável tipo MovieClip.
trace("O valor inicial da variável MovieClip é " + variavelMovieClip);

Voltando ao exemplo do site de comércio eletrônico, comparar o valor da imagem do produtoAtual com null nos fornece uma condição para saber se aquela variável foi preenchida em alguma outra parte do site. Caso ela não tenha sido preenchida, significa que o produto não possui imagem. Assim, adicionamos uma imagem padrão (representada pela variável “imagemPadrao” no exemplo, que poderia ser um MovieClip por exemplo) ao container de imagem (fotoProduto_mc).

Vamos desenvolver agora um exemplo simples e funcional, combinando o uso de Eventos e Estruturas condicionais. Vamos iniciar um projeto flash e criar uma caixa de texto dinâmico, a qual irei chamar de texto_txt:

Estrutura do exemplo

Estrutura do exemplo

Desejo agora escrever um código Action Script que preencha a caixa de texto informando se o cursor do mouse está a direita ou esquerda do centro do Stage. Vejamos:

// Função que irá tratar o evento de movimentação
// do cursor do mouse.
function AtualizarPosicao(evt: MouseEvent)
{
	// Caso a posição do cursor seja superior à metade da largura
	// do Stage.
	if (mouseX > stage.stageWidth / 2)
	{
		texto_txt.text = "Cursor do mouse a direita";
	}
	// Caso contrário.
	else
	{
		texto_txt.text = "Cursor do mouse a esquerda";
	}
}

// Associamos o evento de mover o mouse sobre o stage à função AtualizarPosicao
stage.addEventListener(MouseEvent.MOUSE_MOVE, AtualizarPosicao);

Na linha 7 introduzimos uma nova propriedade, pertencente a classe MovieClip. Trata-se da propriedade mouseX que indica a posição horizontal do mouse em relação ao MovieClip. Como não especificamos um nome de instância de MovieClip, o flash assumirá a timeline que possui o código Action Script (ou seja, a Timeline principal, o root) como sendo a “dona” dessa propriedade. Também existe a propriedade mouseY que indica a posição vertical, funcionando da mesma forma.

Assim, em “mouseX > stage.stageWidth / 2″ estamos avaliando se a posição horizontal do cursor do mouse (em relação ao movie clip root) é maior que a metade da largura do stage.

É importante lembrar que esse evento será disparado sempre que o cursor do mouse se mover, o que garantirá a exibição da informação atualizada com relação à sua posição.

No próximo artigo discutiremos as estruturas de repetição, que como o nome indica, nos permite executar rotinas de forma repetitiva, enquanto uma condição se manter. Em caso de dúvidas, pergunte! Até lá.

Tags: , , , ,

quinta-feira, julho 2nd, 2009 1. Básico

Deixe o seu comentário

Spam Protection by WP-SpamFree