Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom galerinha, segue mais um tutorial que fiz ...
B)
1- Vamos criar um movieClip, que chamaremos de "ball", dai damos o mesmo nome ao seu linkage.
2- Configurando o Stage
Stage.align = "MC";
Stage.scaleMode = "noScale";
3- "fl"(focal length (distancia da visão em relação ao objeto))
var fl:Number = 300;
4- Centralizar o x no meio do Stage
var centerx:Number = Stage.width/2;
5- Centralizar o y no meio do Stage
var centery:Number = Stage.height/2;
6- Assim que iniciar ele manda outros valores para o enterFrame
**function onEnterFrame():Void {**
6.1- Variavel que recebe a propriedade _xmouse
**centerx = _xmouse;**
6.2-Variavel que recebe a propriedade _ymouse
**centery = _ymouse;**
}
7- Criando o loop para repetição e posicionamento dos MovieClips
for (var i:Number = 0; i<30; i++) {
7.1- Variavel que recebe o MovieClip ... chamado por attachMovie
var newBall:MovieClip = attachMovie("ball", "ball"+i, i);
7.2- Atribuindo o MovieClip a uma variavel randomica que o posiciona em qualquer lugar na posição _x
**newBall._x = Math.random()*Stage.width;**
7.3- Atribuindo o MovieClip a uma outra variavel randomica que o posiciona em qualquer lugar agora na posição _y
**newBall._y = Math.random()*Stage.height;**
7.4- Variavel para receber os valores iniciais do MovieClip, _x
newBall._startx = newBall._x;
7.5- Variavel para receber os valores iniciais do MovieClip, _y
newBall._starty = newBall._y;
7.6- Agora criando o efeito de 3D, mechendo no eixo "_z"
**newBall._z = Math.random()*1000;**
7.7- Criando uma escala para o tamanho dos MovieClips
7.7.1- Explicando:
Aqui é pura trigonometria, pois é bastante simples para pessoas que trabalham com 3D
uma simples equação para sabe onde está a "camera", que no caso será a posição do Mouse
A lógica
- A escala de cada MC recebe o "fl"(focal length (distancia da visão em relação ao objeto))
- Depois é dividade pela a mesma variavel "fl" somada a variavel "_z" de cada MovieClip
newBall.scale = fl/(fl+newBall._z);
7.8- Alternando a propriedade _xscale e _yscale dos MovieClips que recebe um valor de 100 multipicado pelo scale de cada objeto
**newBall._xscale = newBall._yscale=100*newBall.scale;**
7.9- Alternando a propriedade _alpha dos MovieClips que recebe um valor de 100 multipicado pelo scale de cada objeto
**newBall._alpha = 100*newBall.scale;**
7.10- Alternando os niveis entre os MovieClips
**newBall.swapDepths(Math.round(1000*newBall.scale));**
7.11- Atribuindo uma função ao onEnterFrame do MovieClip
newBall.onEnterFrame = ballEF;
}
8- Criando uma função para onEnterFrame citado acima ...
**function ballEF():Void {**
8.1- Aqui iremos mecher com a variavel de offSet, primeiro a "x" depois a "y"
**this.offx = this._startx-centerx;**
**this.offy = this._starty-centery;**
8.2- Agora a propriedade _x recebe o valor da variavel "centerx" somada a variavel "offx" multiplicado pela a escala de cada Objeto
**this._x = centerx+this.offx*this.scale;**
8.3- A mesma coisa com o _y, só mudando as respectivas propriedades.
**this._y = centery+this.offy*this.scale;**
}
Agora o código completo ...
Stage.align = "MC";Stage.scaleMode = "noScale";//var fl:Number = 300;var centerx:Number = Stage.width/2;var centery:Number = Stage.height/2;function onEnterFrame():Void { centerx = _xmouse; centery = _ymouse;}for (var i:Number = 0; i<30; i++) { var newBall:MovieClip = attachMovie("ball", "ball"+i, i); newBall._x = Math.random()Stage.width; newBall._y = Math.random()Stage.height; newBall._startx = newBall._x; newBall._starty = newBall._y; newBall._z = Math.random()1000; newBall.scale = fl/(fl+newBall._z); newBall._xscale = newBall._yscale=100newBall.scale; newBall._alpha = 100newBall.scale; newBall.swapDepths(Math.round(1000newBall.scale)); newBall.onEnterFrame = ballEF;}function ballEF():Void { this.offx = this._startx-centerx; this.offy = this._starty-centery; this._x = centerx+this.offxthis.scale; this._y = centery+this.offythis.scale;}E viva a matemática !!!
=)
Qualquer dúvida é só perguntar, Ok.
Carregando comentários...