Este
exemplo mostra um modo simples de simular 3d em Flash pela
mudança do sombreado e do tamanho dos objetos no
plano de fundo comparados com aqueles em primeiro plano.
As funções Math.sin e Math.cos, sempre úteis,
estão também incorporadas, para conseguir
objetos se movendo em círculos com um senso de perspectiva.
Meu muito obrigado a Sev Klaus por tornar o código
para fazer isto disponível no site dele, cooool.com.
Eu peguei uma cópia numa sexta-feira e bolei as variações
acima durante o fim-de-semana.
No
filme acima, usamos o onipresente movieclip controlador
tanto para configurar as coisas como para mantê-las
rodando. Primeiro criamos uma bola "semeadora"
(desenhar a bola, converte-la em um movieclip) e demos a
ela o identificador de exportação altamente
criativo de expBall. Então, fizemos um movieclip
em branco, o arrastamos sobre o palco, e configuramos uma
rotina onClipEvent(load) para configurar as variáveis
que queríamos usar (e permitir que elas fossem facilmente
trocadas ou controladas com botões deslizantes ou
botões para experiências) e para criar os círculos
de bola, e um onClipEvent(enterFrame) para manter os círculos
em movimento.
Este é o código no onClipEvent(load).
Os nomes das variáveis devem lhes dar uma pista do que cada um
deles faz: startx1, startx2, e startx3 definem os eixos centrais X para
cada um dos três círculos (e starty define o eixo central
X para todos). No círculo final, criamos os movieclips bola para
cada círculo e os distribuímos em volta de um círculo.
Tendo
configurado as variáveis e posto as bolas sobre o
palco nas suas posições iniciais, usamos agora
um loop onClipEvent(enterFrame) para mantê-las em
movimento (a variável turnedOff na raiz (_root) indica
se o usuário desligou o filme com o botão
on/off no canto mais baixo à direita.) Existem três
loops For, um para controlar cada círculo de bolas.
Eles são idênticos, exceto pela substituição
da tangente por coseno no segundo círculo (o que
produz uma variação interessante, nós
imaginamos), e -= por += no terceiro círculo (que
reverte a direção do círculo).
Para entender que efeito cada uma das variáveis
tem no círculo, carregue o fla e tente algumas mudanças!
Eu poderia, também, apontar que relacionamentos de algumas variáveis
neste exemplo são alteradas em relação ao que elas
deveriam ser em uma aplicação 3d real, mas isso produz
o efeito que eu quero; como aprendi na conferência sobre projeção
isométrica de Andries Odendaal e da conferência sobre pêndulos
de Samuel Wan, na Flashforward, é mais importante codificar o
que você precisa de um modo eficiente para o processamento, do
que ter certeza que você usa a equação física
precisamente correta! Aqui está a rotina onClipEvent(enterFrame).
Para
obter algumas variações, simplesmente mude
as variáveis de inclinação e velocidade
angular, e voila, você conseguiu seu próprio
Tilt-a-whirl pessoal. Para fazer isso ainda mais interessante,
no lugar de usar um objeto movieclip de quadro único,
você poderia usar um objeto tweened sobre o número
de quadros que ele leva para dar a volta no círculo,
de forma que um objeto apresente uma face diferente em cada
local no loop.
Tradução:
Alexandre Porto
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