Ver Mensaje Individual
  #6 (permalink)  
Antiguo 04/09/2007, 02:56
Avatar de Mahalo
Mahalo
 
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 9 meses
Puntos: 12
Re: Cual es la accion?

Con un poco de trigonometría, geometría y la clase Math es muy fácil.

En el escenario dos pares de mc's con los siguientes nombres de instancia:
ojo1_mc y ojo2_mc -> círculitos que hacen de ojos.
contorno1_mc y contorno2_mc -> circunferencias donde se mueven los ojos.
Código:
function getDistancia(difX:Number, difY:Number) {
	var h:Number = Math.sqrt(Math.pow(difX, 2)+Math.pow(difY, 2));
	return h;
}
function getAngulo(difX:Number, difY:Number) {
	var h:Number = getDistancia(difX, difY);
	var a:Number = Math.acos(difX/h);
	if (difY>0) {
		return a;
	} else {
		return (2*Math.PI)-a;
	}
}
_root.onMouseMove = function() {
	for (i=1; i<=2; i++) {
		var contorno:MovieClip=_root["contorno"+i+"_mc"];
		var ojo:MovieClip=_root["ojo"+i+"_mc"];
		var distancia:Number = getDistancia(_root._xmouse-contorno._x, _root._ymouse-contorno._y);
		var radio:Number = Math.floor(contorno._width/2)-Math.floor(ojo._width/2);
		if (distancia>radio) {
			var angulo:Number = getAngulo(_root._xmouse-contorno._x, _root._ymouse-contorno._y);
			ojo._x = contorno._x+(radio*Math.cos(angulo));
			ojo._y = contorno._y+(radio*Math.sin(angulo));
		} else {
			ojo._x = _root._xmouse;
			ojo._y = _root._ymouse;
		}
	}
};
Saludos!