hitTestShape

Usando como base o que foi aprendido no artigo http://sierakowski.eu/list-of-tips/39-collision-detection-methods-hittest-and-hittestobject-alternatives.html

EDIT: Infelizmente após alguns problemas utilizando a classe citada, devido a referencias a stage e matrix, tive de mudar o uso da classe.

Criei a classe hitTestShape, que cria um prototype para MovieClip, habilitando o método hitTestShape para todos os Objetos MovieClip.

Arquivo: hitTestShape Example
SWF de test: hitTestShape

Arquivo hitTestShape2 Example
SWF de test: hitTestShape2

 

 

Logical NOT

Após ver o vídeo Wat (http://www.youtube.com/watch?v=kXEgk1Hdze0) resolvi montar este post para demonstrar mais casos similares. O Operador “!” é uma ótima opção.

O operador “!” tem sempre preferência, sendo assim, qualquer checagem utilizando-o será efetuado primeiro.

Segue um exemplo de uso do operador “logical NOT” indevido.

import flash.display.MovieClip;
import flash.display.Sprite;

var teste:*;

teste = new MovieClip();
// O operador ! tem preferência
if(!teste is Sprite){
	trace('Teste Certo');
}else{
	trace('Teste Errado');
}

teste = new Sprite();
// Os parênteses garantem o funcionamento correto
if(! ( teste is MovieClip ) ){
	trace('Teste Certo');
}else{
	trace('Teste Errado');
}

Por mais que o primeiro exemplo pareça certo, ele primeiro irá checar !teste e então testará o resultado disto (um booleano) com o operador ‘is’, resultando erroneamente.

A melhor opção é de sempre utilizar parênteses, garantindo o funcionamento correto de suas expressões.