Paginas Amigas

Efecto -Botón Sigue al Mouse PDF Imprimir E-mail
1
Escrito por Fernando   
Domingo, 26 de Abril de 2009 15:24


La siguiente función tienen como objetivo desplazar un objeto según la posición del mouse, si el mouse se desplaza con mas rapidez que su fuerza de atracción este vuelve a su posición original, para ello tenemos que tener encuentra que esta función es dependiente de las clases Tween , flash.geom.Point y como secundaria la clase easing

Esta función es muy sencilla de aplicar, pero antes creamos tres botones con el nombre de instance boton_mac ,boton_win,boton_lin,



 


 


 



Código :AS2
 
import mx.transitions.easing.*;
import flash.geom.Point;
import mx.transitions.Tween;
function SigeBotonT1(Boton:Object, Punto:Point, Limite:Number, Fuerza:Number, Func:Function, Activa:Boolean) {
	if (!Activa) {
		this.createEmptyMovieClip(Boton._name+'_T1', this.getNextHighestDepth());
		this[Boton._name+'_T1'].IniX = Boton._x;
		this[Boton._name+'_T1'].IniY = Boton._y;
	}
	var BC:MovieClip=this[Boton._name+'_T1']
	var distancia:Number;
	BC.onEnterFrame = function() {
		distancia = Math.sqrt(Math.pow(Boton._x-Punto.x, 2)+Math.pow(Boton._y-Punto.y, 2));
		if (distancia<Limite) {
			Activa = true;
			Boton._x += (Punto.x-Boton._x)/Fuerza;
			Boton._y += (Punto.y-Boton._y)/Fuerza;
		} else {
			if (Activa) {
				delete this.onEnterFrame;
				var tx:Tween = new Tween(Boton, "_x", Func, Boton._x, BC.IniX, 1, true);
				var ty:Tween = new Tween(Boton, "_y", Func, Boton._y, BC.IniY, 1, true);
				ty.onMotionFinished = function() {
					SigeBotonT1(Boton,Punto,Limite,Fuerza,Func,true);
				};
			}
		}
	};
}
Analizado en 0.019 segundos ha 53.77 KB/s, GeSHi 1.0.8.2-- CFX.GHCode Programado Por Crea-Flash.com

Hecho esto al código dado anteriormente le añadimos lo siguiente


Código :AS2
 
var p:Point=new Point()
this.onEnterFrame=function (){
	p.x=_xmouse
	p.y=_ymouse
}
SigeBotonT1(boton_mac,p,100,5,Elastic.easeOut,false);
SigeBotonT1(boton_win,p,100,5,Elastic.easeOut,false);
SigeBotonT1(boton_lin,p,100,5,Elastic.easeOut,false);
 
Analizado en 0.014 segundos ha 18.29 KB/s, GeSHi 1.0.8.2-- CFX.GHCode Programado Por Crea-Flash.com

 


El resultado es el lo que se muestra arriba


Explicare los parámetros de la función


Boton:Object: indica cual es el objeto que deseamos vincular al parametro Punto:Point quien posee las coordenadas X y Y,el objeto se moverá hasta este punto si entra en su área Limite


Punto:Point:Este parametro tiene las coordenadas tanto de X y de Y que nos serviran de guía para desplazar el objeto a dicho punto


Limite:Number: Es el limite es la distancia de aproximación del Punto , Para que se hagan una idea funciona como radar si el Punto entra en esta área el objeto lo detecta se desplaza hasta el,


Fuerza:Number: Es la fuerza con la que es atraído el objeto hasta el Punto si mayor es el valor de este parametro mas lento es el desplazamiento del objeto,


Func:Function: Utiliza las funciones de tipo easing, si no conoseis este tipo de clases preguntar en el foro


Activa:Boolean: Esta parametro sirve únicamente a la propia función, la cual lo para generar un bucle es recomendable que este siempre en false,


La razón del porque utiliza el Point y no las coordenadas directas del mouse es simplemente para que se aplicable a otro tipo de animaciones muy conveniente en juegos


 

 

Descargar Archivo de Ejemplo
Última actualización el Jueves, 28 de Mayo de 2009 02:16
 

Articulos Relacionados