Curso AS3

Flash CS4, Flash3D Cube com suporte a materiais

Adicionei suporte a materiais no objeto Cube, são classes para estudo.

As novidades são as seguintes:

Foi reformulado a forma de iniciar o objeto Cube para ficar mais simples.

This movie requires Flash Player 8.

import com.esouza.Flash3D.object.*;
 
//inicia o objeto Cube
var c:Cube = new Cube();
//desenha o objeto Cube, o método drawCube3D() retorna uma
//referência do container Sprite do Cubo, armazenei está referência
//em uma variável para poder manipula-lo, ex. scube.alpha = .5;
var scube:Sprite = c.drawCube();
//adiciona o cubo no palco
addChild(scube);
 
//posiciona o cubo no centro do palco
scube.x = stage.stageWidth/2;
scube.y = stage.stageHeight/2;

Aplicar cores individualmente para cada face do cubo.

This movie requires Flash Player 8.

//setar o material antes do método drawCube()
//os nomes das faces são, top, bottom, front, back, left e right,
//não é necessário setar todos os lados, as faces não setadas receberão
//a cor da constante BGCOLOR 0x000000, para alterar a cor use c.bgcolor = 0xff0000;
c.material = {top: 0xFF0000,
				bottom: 0x00FF00,
				front: 0x0000FF,
				back: 0x00FFFF,
				left: 0xFFFF00,
				right: 0xFF00FF}

Aplicar a mesma cor para todos as faces.

c.material = {all: 0xff0000};
//ou
c.bgcolor = 0xff0000;

Aplicar imagens individualmente para cada faces.

This movie requires Flash Player 8.

//belf é o linkage da imagem na biblioteca
//o linkage de uma imagem na biblioteca recebe
//a classe base BitmapData, por isto é necessário passar o width e height
var be:belf = new belf(100, 100);
 
//para setar o material no objeto segue
//a mesma forma utilizada para cores
//lembrando de setar o material antes do método drawCube()
c.material = {top: be,
				bottom: be,
				front: be,
				back: be,
				left: be,
				right: be};

A mesma imagem para todas as faces.

var be:belf = new belf(100, 100);
c.material = {all: 0xff0000};

Aplicar MovieClips individualmente para cada face (o movieclip pode conter tudo que ele é capaz de armazenar, como vídeos, componentes do Flash, etc.

This movie requires Flash Player 8.

//passe o nome do linkage do mc na biblioteca
c.material = {top: mctop,
				bottom: mcbottom,
				front: mcfront,
				back: mcback,
				left: mcleft,
				right: mcright};

O mesmo MovieClip para todas as faces.

c.material = {all: mctop};

Os três tipos de materiais no mesmo cubo.

//top : movieclip mctop
//front : imagem belf
//back : cor amarelo 0xFFFF00
var be:belf = new belf(100, 100);
c.material = {top: mctop,
				front: be,
				back: 0xFFFF00};

Propriedades do objeto Cube úteis.

//define o tamanho do cubo
c.size = 150;
//as imagens e movieclips que não tem a mesma largura e altura serão
//esticadas, para manter a proporção sete a propriedade keepRatio para true
c.keepRatio = true;
//a cor do background do cubo é por padrão preto, esta  propriedade será útil
//para aplicar a mesma cor para todas as faces e no caso da propriedade keepRatio estar setada para true
//a área que o movieclip ou imagem não preencher receberá a cor da propriedade bgcolor
c.bgcolor = 0xff0000;

O método doRotation() rotaciona o cubo nos eixos X e Y, pode ser usado para rotação animada.

c.doRotation({degreeX: 45, degreeY: 45});

Pode-se rotacionar apenas um eixo.

c.doRotation({degreeX: 45});

Exemplo de animação.

stage.addEventListener(Event.ENTER_FRAME, onRotation);
 
function onRotation(evt:Event):void
{
	//c.doRotation({degreeX: ((-stage.stageWidth/2)+this.mouseX)*0.03});
	//c.doRotation({degreeY: ((-stage.stageHeight/2)+this.mouseY)*0.03});
	c.doRotation({degreeX: ((-stage.stageWidth/2)+this.mouseX)*0.03, degreeY: ((-stage.stageHeight/2)+this.mouseY)*0.03});
}

[update]As classes podem ser conferidas em um outro post.[/update]

Pretendo adicionar mais alguns recursos como carregamento de imagens externas, width e heigh diferentes, permitir animações utilizando engines de animação.

4 Responses to “Flash CS4, Flash3D Cube com suporte a materiais”

  1. Diego Says:

    Cara, muito bom esse post. muito interesante mesmo.
    Valeus.

  2. Erick Souza Says:

    Valeu Diego. =)

  3. Elvis Says:

    Amigo vlw mesmo.

    Embora não tenha entendido muito bem pois sou iniciante no flash gostaria de fazer um pedido, estou prescisando fazer o mundo em 3d girando e quando colocar o mouse em cima ele parar de girar e apresentar os links, se puder me explicar agradeço!
    vlw

  4. Dusty Berkich Says:

    Excellent material - Many thanks for publishing that info, I suspect that it basically answers my question.

Leave a Reply