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. =)
May 12th, 2010 at 14:06
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
August 10th, 2010 at 21:54
Excellent material - Many thanks for publishing that info, I suspect that it basically answers my question.
November 19th, 2010 at 18:09
5007: An ActionScript file must have at least one externally visible definition. cara voce usa algum tipo de biblioteca? aqui nao deu nao ficou na linha 1.
April 8th, 2011 at 15:10
Tá …
Mas como tornar as faces clicáveis e cm adicionar links ?
Como fazer isso com um icosaedro, por exemplo, e outros
q não são cubos ?????
Abs … Fred
November 18th, 2011 at 3:52
Undeniably believe that which you said. Your favorite reason seemed to be on the internet the simplest thing to be aware of. I say to you, I certainly get irked while people think about worries that they plainly do not know about. You managed to hit the nail upon the top as well as defined out the whole thing without having side-effects , people can take a signal. Will probably be back to get more. Thanks