Empurrar objeto com o mouse
Oi Pessoal!
Estou desenvolvendo um esquema onde o mouse vai arrastando o objeto pelo palco.
A ideia é simples.
Estou tendo problemas em conseguir calcular os valores que se acrescentara no objeto ao ser empurrado do angulo que o mouse estiver de acordo com o objeto.
Todo o desenvolvimento foi feito em As3.
Nao existe nada criado no palco.
package {
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.filters.GlowFilter;
import flash.ui.Mouse;
public class estudo_As3_2_tw extends Sprite
{
//DEFINE BOLA
public var bola:Sprite;
public var xMouse:Number;
public var yMouse:Number;
//CRIA BOLA
public function criaBOLA():void{
bola = new Sprite;
bola.x = 280;
bola.y = 200;
bola.graphics.beginFill(0xffffff,1);
bola.graphics.drawCircle(0,0,10);
bola.filters = [new GlowFilter(0xffffff,1,10,10,2,2)];
bola.graphics.endFill();
this.addChild(bola);
}
//CALCULO DISTANCIA/RAIO ENTRE O OBJETO E O MOUSE
public function distancia(xMouse:int,yMouse:int,xObjeto:int,yObjeto:int):int{
var distanciaX:Number = xMouse - xObjeto;
var distanciaY:Number = yMouse - yObjeto;
var distancia = Math.floor( Math.sqrt( Math.pow(distanciaX,2) + Math.pow(distanciaY,2) ));
return distancia;
}
//CALCULO ANGULO EM RELACAO AO OBJETO
public function angulo(xMouse:int,yMouse:int,xObjeto:int,yObjeto:int):int{
var distanciaX:Number = xMouse - xObjeto;
var distanciaY:Number = yMouse - yObjeto;
var angulo = Math.floor(Math.atan2(distanciaY,distanciaX) * (180/Math.PI));
return angulo;
}
//ATUALIZA POSICAO DO MOUSE E ATIVA FUNCOES AO EVENTO DO MOUSE
public function posicaoMouse(evento:MouseEvent):void{
xMouse = mouseX;
yMouse = mouseY;
var xObjeto:int = bola.x;
var yObjeto:int = bola.y;
gridPalco.valorX.text = xMouse;
gridPalco.valorY.text = yMouse;
var distancia:Number = distancia(xMouse,yMouse,xObjeto,yObjeto);
var angulo:Number = angulo(xMouse,yMouse,xObjeto,yObjeto);
empurrar(angulo,distancia);
//trace('Distancia entre o mouse e o objeto é: ' + distancia);
//trace('O angulo entre o mouse e o objeto é: ' + angulo);
}
//EMPURRA
public function empurrar(angulo:Number,raio:Number):void{
if(bola.hitTestPoint(mouseX,mouseY,true)){
bola.x += Math.round( raio * Math.sin(angulo * ( Math.PI / 180)));
bola.y += Math.round( raio * Math.cos(angulo * ( Math.PI / 180)));
}
}
//PALCO
public function estudo_As3_2_tw()
{
criaBOLA();
this.stage.addEventListener(MouseEvent.MOUSE_MOVE, posicaoMouse);
}
}
}
Atualmente o codigo funciona, mas não perfeitamente.
Existe alguns pontos que não estou funcionando corretamente.
Talvez meu calculo para saber a posiçao que o objeto tera ao se colidir com o mouse esteja errada.
Alguem poderia me ajudar?
Um abraço, Evandro Eisinger
Discussão (2)
Carregando comentários...