NILTON BICALHO (61 pts)

LUIZ HERRERA (117 pts)

MARLOS ALVES CARMO (90 pts)

RÔMULO NUNES (32 pts)

GUILHERME SCHEIBE (49 pts)

MANGOOST (80 pts)

FLASHGURU (155 pts)

EDUARDO PERROUD (52 pts)

HELEN TRIOLO (444 pts)

RICARDO TAKAHASHI (180 pts)

MUZAK (45 pts)

SYDNEY GANHO (60 pts)
Treinamento PontoFlash de Flash e ActionScript

Como desabilitar o botão direito do Mouse num executável?

Como carregar um filme dentro de um movieclip que por sua vez está dentro do meu filme principal?

Como carregar e posicionar dinamicamente seis JPGs?

Tem como encontrar um determinado texto numa string?

Queria fazer um sistema de busca.

Existe algum limite para se usar o with em um botão para controlar vários movie clips ao mesmo tempo?

FlashDecompiler

Como criar um link em um banner no Flash?

Problemas com relógios no Flash5

Como rolar umas imagens na horizontal, de maneira que elas se repitam continuadamente?

Quero que o ícone do mouse mude de forma para um gif que eu definir.

Desenhar polígonos no Flash dinamicamente.

Como eu faço para: se a palavra digitada for qualquer então vá para frame 20 senão, vá para frame 30.

Porque meu texto não aparece dentro de uma máscara?
Jogo da Forca (terceira parte)

Texto difuso

Janelas pop-up e semi-full no flash

Número randômicos sem repetições no Flash 5.

Loop Mixer.

Aplicação simultânea de Fio e Sombra a bitmaps - Fireworks

Cadastro de usuários, com Flash+ASP

Objeto array - Classificar uma array (sorting) e e arrays multidimensionais

Como enevoar as bordas de uma imagem no Fireworks.

Macromedia Flash - Tendências

Colisão

Máscara arrastável no Flash 5.
Airos 2

Click determiner

Colors

Catavento2

3dbuilderv

Floor of balls

Fract

Textos animados

Wormspyder

Over menu

Menu HitTest

Menu Silverado
HOME | TUTORIAIS
3D Wireframe.
por Helen Triolo

(Nota: Para impedir o filme seja redesenhado a cada quadro e devorar assim todo o poder do seu processador, clique no botão de reset - isto fará com que o objeto volte para sua posição não girada e interromperá o re-desenho até queseja pressionado a tecla render ou um dos botões de rotação).

Classes para suportar desenho em 3D

Há algumas semanas atrás, dei uma olhada no artigo de Chad Corbin sobre como criar objetos 3D em tempo real em Flash, um exemplo atrativo para mim porque mostra como criar e fazer girar uma outra coisa além de um cubo. Cubos em 3D girando são legais em seu movimento, mas sempre considerei que seria mais interessante saber como criar alguma coisa curva e então ter esta coisa curva se movendo também. Desde que uma forma pode ser tão perfeitamente definida (como uma série de curvas bezier quadráticas e/ou segmentos de linha) e produzidas no Flash, pensei em como seria maravilhoso permitir ao usuário definir sua própria forma (uma série de curvas) e então estender esta forma para fazer um objeto em 3D completo, ou por extrusão, ou pela criação de um objeto radialmente simétrico (esta amostra é um simples exemplo desse último).

Assim, da maneira usual, despendi alguns dias desmembrando o código do Chad para descobrir o que ele fazia e então outros poucos dias recolocando-o de volta dentro de alguma coisa útil que eu pudesse usar genericamente em futuros projetos. No processo, coloquei alguns métodos de classe Math juntos para criar e manipular uma matriz transformadora, para encontrar um ponto ao longo de uma curva bezier, e executar multiplicações matriz-matriz e matriz-vetor (necessárias para projetar definições 3D em um espaço 2D).

Para configurar a cena

A classe controladora neste exemplo é Scene, que inclui propriedades para definir a linha de tempo na qual a cena será criada, um conjunto de formas que contêm movieclips de forma individualizada, e um fator de perspectiva. Após desenhar a forma padrão, a primeira coisa a ser feita no filme é definir um objeto Scene com esta instrução:

var wireFrame = new Scene(this.mcShow, 300, false, 17);

Isto cria um objeto chamado wireFrame do tipo Scene que irá residir na linha de tempo mcShow, tendo fator de perspectiva 300, sem eixos mostrados e que contém 17 formas. Cada uma dessas formas será representada por um movieclip, cuja referência é armazenada no conjunto aShapes (uma propriedade do objeto Scene). Estas formas incluem a forma curva original (definida pelo usuário, ou utilizando a forma padrão) situadas horizontalmente no plano xy, mais 7 duplicatas dela, dispostas à volta do eixo y em ângulos de 45 graus, mais 9 círculos horizontais ao longo do comprimento da figura.

Para definir a forma

Cada forma é definida por 4 pontos de ancoragem (pontos finais, mostrados como pontos no filme acima) e 3 pontos de controle (triângulos), todos os quais podem ser arrastados, dentro de certas limitações, pelo usuário. Para converter a forma selecionada pelo usuário em um objeto utilizável em Flash, empreguei uma estrutura usada para objetos 2D, que nada mais é do que um objeto com estas propriedades:

ptStart: um ponto 3d (com propriedades x, y, z) que mostra onde a forma começa

aCurves: um conjunto de objetos com propriedades p e c. Cada objeto no conjunto define uma curva, ou uma curva atual (com um ponto de controle) ou um segmento de linha (neste caso o ponto de controle é nulo). p é o 3º ponto final da curva, e c é o 3º ponto de controle se a curva tiver um.

isClosed: um valor booleano que diz se a curva é fechada ou não. Se fechada, um preenchimento será aplicado. Se aberta, a curva não terá preenchimento.

lineweight: espessura da linha (em pixels)

linecolour: cor da linha, se você for Britânico (Deixei os nomes das variáveis como os da amostra do Chad)

linealpha: transparência da linha

fillcolour: cor de preenchimento (não utilizada neste exemplo)

fillalpha: transparência do preenchimento

No filme, a curva que define a forma do objeto 3d é definida no movieclip mcDraw, e o objeto 3D wireframe é então criado no movieclip mcShow. Quando uma forma tiver sido definida e o usuário clicar Render, a função makeFrame é chamada. makeFrame traduz os pontos especificados no mcDraw em pontos utilizáveis dentro do mcShow, com instruções como:

var p0x = mcDraw.p0._x - mcDraw.p3._x;
var p0y = mcDraw.p0._y - offset;
var p1x = mcDraw.p1._x - mcDraw.p3._x;
var p1y = mcDraw.p1._y - offset;
...

var c1x = mcDraw.c1._x - mcDraw.p3._x;
var c1y = mcDraw.c1._y - offset;

onde p0x/p0y define o ponto de partida (no plano xy), p1x/p1y define o ponto final da primeira curva na forma, e c1x/c1y define o ponto de controle da primeira curva. Quando estes pontos foram estabelecidos, o método setShapeProps do wireFrame (um objeto do tipo Scene) é chamado. Isto passa todas as propriedades da forma (ponto de partida, conjunto de definições de curva, espessura da linha, etc) para o movieclip que as representarão (salvas em wireFrame.aShapes[0]):

// faz as linhas verticais: #1 position at z=0
wireFrame.setShapeProps(0, {x:p0x, y:p0y, z:0},
                    [ new Curve( {x:p1x, y:p1y, z:0}, {x:c1x, y:c1y, z:0} ),

                    new Curve( {x:p2x, y:p2y, z:0}, {x:c2x, y:c2y, z:0} ),
                    new Curve( {x:0, y:p3y, z:0}, {x:c3x, y:c3y, z:0} ) ],
                    false, 1, 0xffffff, 100, 0, 0);

Uma curva é um objeto da classe Curve, definido por dois pontos: o ponto final da curva, e seu ponto de controle. A instrução acima configura a primeira forma na cena (index=0) para iniciar a um ponto definido por p0x/p0y/0, então curve para um ponto em p1x/p1y/0 usando c1x/c1y/0 como controle, então curve para o ponto p2x/p2y/0 usando c2x/c2y/0 como controle, etc. O parâmetro "false" especifica que a curva não é fechada (e então nenhum preenchimento será aplicado), e os parâmetros remanescentes definem a linha (branca, amplitude do pixel 1, alfa -transparência- 100) e preenchimento (nenhum, mas colocamos cor e transparência de qualquer modo para mostrar onde um preenchimento deverá entrar).

Para duplicar a forma (segunda parte)

Tradução:
Sérgio Ramalho



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
0 comentário