Repulsão
No fórum do curso surgiu um link interessante sobre repulsão, me interessei e escrevi a seguinte classe.
This movie requires Flash Player 8.
Segue a classe:
package{ import flash.display.MovieClip; import flash.display.Graphics; import flash.display.Stage; import flash.events.Event; public class repulsaoBolas extends MovieClip { private var sWidth:uint = stage.stageWidth; private var sHeight:uint = stage.stageHeight; private var qtd:uint = 500; private var mcs:Array = new Array(); private var bola:MovieClip; public function repulsaoBolas():void { stage.frameRate = 30; for(var i:uint = 0; i < this.qtd; i++) { this.bola = new MovieClip(); this.bola.graphics.beginFill(Math.random()*0xFFFFFF); this.bola.graphics.drawCircle(0,0,Math.random() * 4 + 6); this.bola.graphics.endFill(); this.bola.x = Math.round(Math.random() * this.sWidth); this.bola.y = Math.round(Math.random() * this.sHeight); addChild(this.bola); this.bola.ox = this.bola.x; this.bola.oy = this.bola.y; this.mcs.push(this.bola); } addEventListener(Event.ENTER_FRAME, this.onMove); } private function onMove(evt:Event):void { for each(var a in this.mcs) { var angulo:Number = Math.atan2(a.y - mouseY, a.x - mouseX); var d:Number = 1000 / Math.sqrt(Math.pow(mouseX - a.x, 2) + Math.pow(mouseY - a.y, 2)); a.x += d * Math.cos(angulo) + (a.ox-a.x) * 0.1; a.y += d * Math.sin(angulo) + (a.oy-a.y) * 0.1; } } } }
Caso queira testar, convertendo o angulo de radianus para graus gera um efeito interessante.
var angulo:Number = Math.atan2(a.y - mouseY, a.x - mouseX) * 180 / Math.PI;
[UPDATE] O funcionamente é bem simples, ele é baseado na distância entre dois pontos (geometria), mouse e bola, e no ângulo formado entre o mouse e a bola (trigonometria).

October 8th, 2007 at 10:02
Muito legal, do tipo de coisa que a gente vê e fica pensando em algo para poder usar-la.
October 8th, 2007 at 11:59
interessante o efeito
o link do trabalho original é esse:
http://shang-liang.com/blog/using-molecular-mechanics-in-flash/
lá tem inclusive a classe para quem quiser o efeito usando AS2.0
October 8th, 2007 at 12:05
nossa escrevi interessante com Ç, erick se puder alterar
e parabens pelo blog
October 8th, 2007 at 12:26
Obrigado Ederson. =)
October 9th, 2007 at 10:38
Parabéns Erick! Otimo trabalho! Eu estou criando vergonha na cara agora, e trabalhando com AS3, é sempre muito bom ver trabalhos como o seu, para dar umas luzes :D!
March 29th, 2008 at 5:07
hello everybody. my Japanese is not good but it seems like a very nice web site. thanks
May 21st, 2008 at 18:39
My Japanese is not good…. hehe
é cada figura!
Bom trabalho! o Blog é importante porque não é fácil encontrar publicações de qualidade que tratem de distribuir o conhecimento AS3.
May 23rd, 2008 at 16:55
Olá Eric Parabens pelo trabalho, so que coloquei o codigo em um arquivo .as e no frame 1 do arquivo fla eu criei um obj a classe repulsaoBolas e rodei e nada aconteceu? Porque?
abs
September 16th, 2008 at 18:53
Puts Erck, muito interessante essa classe, bem como esse efeito.
!