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.
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.
//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.
//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.
//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.




October 13th, 2008 at 14:49
Cara, muito bom esse post. muito interesante mesmo.
Valeus.
October 15th, 2009 at 13:41
Valeu Diego. =)