Efeito de vento com o Flash CS3 Math.random ()
Agora que temos nosso floco de neve caindo no nosso FlashR sistema de partículas, vamos modificar um pouco o código do ActionScript 3. Nosso floco cai direto. Mas, a menos que não exista absolutamente vento, a maioria dos flocos se desloca inclinada. Então, vamos usar um pouco de matemática para fazer com que o nosso floco se mova ligeiramente para a direita quando ele cair. Para adicionar mais realismo, queremos que a quantidade de movimento horizontal mude à medida que o floco de neve avança pelo palco.

Lembre-se de que em um dos tutoriais anteriores desta série, colocamos flocos em diferentes posições horizontalmente ao longo do topo do palco. Fizemos isso definindo valores diferentes para a posição X para cada floco. Portanto, neste tutorial, podemos usar a mesma propriedade _Snowflake.x novamente para controlar o movimento horizontal na animação.

Em segundo lugar, quando criamos nosso floco, definimos as posições X e Y iniciais do floco como um número aleatório.

_Snowflake.x = Math.random () * 510;
_Snowflake.y = Math.random () * 40;

Podemos usar o mesmo Math.random () para controlar a quantidade de movimento horizontal aleatório. Você adivinhou o que vem a seguir?

Sabemos que em cada quadro de nosso filme em Flash chamamos a função de queda de neve.

stage.addEventListener (Event.ENTER_FRAME, queda de neve);

Essa função aumenta a propriedade _Snowflake.y em 10 para cada quadro. É isso que move o floco pelo palco.

_Floco de neve.y + = 10;

Mas isso é rápido demais para vermos o sutil movimento horizontal que adicionaremos a seguir. Então, vamos abrandar um pouco, alterando o 10 para um 5.

_Snowflake.y + = 5;

Agora podemos usar o mesmo código para mover o floco horizontalmente para a direita. Tudo o que precisamos fazer é mudar o_Snowflake.y para_Snowflake.x.

_Floco de neve.x + = 10;

Agora, o floco de neve se moverá 10 pixels para a direita e 5 pixels para baixo em cada quadro em nosso filme em Flash. Mas, seria mais realista se o movimento horizontal do floco de neve fosse mais aleatório, pois ele desce pelo palco. Podemos fazer isso substituindo o número 10 por um número aleatório entre 0 e 9. Usaremos o Math.random () para fazer isso.

_Snowflake.x + = Math.random () * 10;

Em seguida, adicionamos esse novo código à função snowfall e obtemos isso.

if (_Snowflake.y> 370)
{stage.removeEventListener (Event.ENTER_FRAME, queda de neve); }
outro
{_Snowflake.y + = 5;
_Snowflake.x + = Math.random () * 10;}

Mas agora que estamos movendo o floco para a direita, ele pode eventualmente ir além do lado direito da tela. Lembre-se de que paramos o floco de neve se ele caísse abaixo do palco.

if (_Snowflake.y> 370)

Também podemos pará-lo se ultrapassar o lado direito do palco. Vamos adicionar isso à nossa declaração condicional. Como queremos que a animação pare se a primeira ou a segunda dessas condições forem verdadeiras, podemos usar o || operador entre as duas condições na instrução if.

if (_Snowflake.y> 370 || _Snowflake.x> 550)

Se uma dessas condições for verdadeira, o Flash removerá o ouvinte de evento ENTER_FRAME.

Aqui está o nosso novo código.
stage.addEventListener (Event.ENTER_FRAME, queda de neve);

var _Snowflake: mcSnowflake;

_Snowflake = novo mcSnowflake ();
addChild (_Snowflake);
_Snowflake.x = Math.random () * 510;
_Snowflake.y = Math.random () * 40;

função snowfall (event: Event): void
{
if (_Snowflake.y> 370 || _Snowflake.x> 550)
{stage.removeEventListener (Event.ENTER_FRAME, queda de neve); }
outro
{_Snowflake.y + = 5; _Snowflake.x + = Math.random () * 10; }
}


Quando você envia um texto para o seu filme, o floco de neve varia o movimento horizontal ao cair no fundo do palco. Salve sua cena de neve como SnowScene6.fla.

Direitos autorais 2018 Adobe Systems Incorporated. Todos os direitos reservados. As capturas de tela do produto Adobe foram impressas com permissão da Adobe Systems Incorporated. Adobe, Photoshop, Álbum do Photoshop, Photoshop Elements, Illustrator, InDesign, GoLive, Acrobat, Cue, Premiere Pro, Premiere Elements, Bridge, After Effects, InCopy, Dreamweaver, Flash, ActionScript, Fireworks, Contribute, Captivate, Flash Catalyst e Flash Paper é / são marcas comerciais registradas ou marcas comerciais da Adobe Systems Incorporated nos Estados Unidos e / ou em outros países.