Guia prático sobre o boneco do flash reverso
O boneco do flash reverso é um asset gráfico que consiste num sprite ou modelo de personagem com orientação invertida, usado principalmente em jogos browser feitos em Adobe Flash ou ActionScript. O conceito é simples: em vez de recortar um segundo desenho para a esquerda quando o personagem vira, inverte-se a imagem já existente. Isso economiza tempo de produção e memória, algo que era crítico nos tempos de banda larga discada. A técnica funciona assim. Você desenha o boneco num só sentido, digamos virado para a direita. Quando precisa que ele olhe para a esquerda, aplica-se uma transformação de espelhamento no eixo X via código. Em ActionScript 2, basta fazer:
personagem.scaleX = -personagem.scaleX;
Isso faz o movie clip virar sem precisar de um segundo frame ou desenho. É rápido, ocupa quase nada de espaço e resolve a maior parte dos casos. Mas não é perfeito.
Como fazer o boneco do flash reverso funcionar no seu projeto
Vou explicar pela experiência. O primeiro passo é organizar o seu arquivo .fla de forma que cada parte do personagem fique num movie clip separado. Se você juntar tudo num único frame, o espelhamento vai distorcer texto e elementos estáticos que não devem inverter. Separe o corpo, os braços, as pernas. Cada peça é um movie clip com nome instância único. O código fica num frame principal ou numa timeline separada, tipo esta lógica:
- Carregar o boneco como sprite único
- Aplicar scaleX negativo quando a tecla de movimento for para a esquerda
- Manter a posição x original para não o boneco sair da tela ao espelhar
O detalhe que quase ninguém conta é a questão do anchor point. Se o ponto de ancoragem do movie clip estiver centralizado, ao fazer scaleX = -1 o boneco vai pular de lugar. O meu problema foi exactamente esse num projecto de 2019. O personagem saltava 30 pixels para a esquerda sempre que invertia. A solução foi reposicionar o anchor point para a base do pé e ajustar a coordenada x manualmente após a inversão. Ficou assim no código: personagem.x = personagem.x - (personagem.width);
personagem.scaleX = -personagem.scaleX;
👉 Clique no botão abaixo para saber mais sobre o assunto!
Isso manteve o boneco no lugar certo. Sem esse ajuste, o efeito visual fica estranho e a jogabilidade sofre. Outro ponto importante: o flash reverso só funciona bem com sprites bidimensionais. Se tentar aplicar isso a um modelo 3D dentro do Flash, não vai dar certo. O ActionScript não tem suporte nativo para transformação 3D de objects complexos. Para isso, tinha de usar bibliotecas externas como o Papervision3D, que era muito mais pesado e complexo.
Sobre onde conseguir o asset, existem ficheiros prontos em sites como o Newgrounds, o Flashkit e fóruns antigos de desenvolvimento de jogos em Flash. A maioria dos pacotes incluem o boneco já com frames animados e o código ActionScript integrado. Procure por "flash character reverse sprite sheet" ou "boneco flash reverso download". Uma limitação séria é que o espelhamento inverte também sombras, iluminação e qualquer detalhe que tenha direção própria. Se o seu boneco tem uma sombra projetada para a direita, ao espelhar ela vai ficar na esquerda, o que pode parecer errado visualmente. Num projecto meu, resolvi isso desenhando a sombra como um elemento separado que também era espelhado, mas mantendo a proporção correta da luz. Foi trabalho extra, mas fez diferença.
Se o seu projecto for mais avançado e precisar de animações complexas em ambas as direcções, o ideal é mesmo criar os dois sprites. O flash reverso serve para protótipos rápidos, jogos simples e situações onde o tempo de produção aperta. Para jogos profissionais, a abordagem dupla é mais limpa e produz resultados visuais melhores.
Considerações finais sobre o uso
O boneco do flash reverso é uma ferramenta útil no kit de desenvolvimento, mas tem o seu lugar certo. Use para jogos 2D simples, protótipos e projectsos pessoais. Não conte com isso para um jogo publicado comercialmente, a menos que o estilo visual permita esse trade-off. A qualidade visual cai, o código fica mais frágil e a manutenção futura é mais complicada. Se precisar de ajuda específica com o código ou configuração do seu arquivo .fla, posso ajudar com isso também. Basta descrever o problema que está a ter.