Quiciera saber si alguien me puede ayudar con el siguiente asunto...
Estoy haciendo un menú que tiene los botones al rededor con una flecha en el centro, imaginense una especie de brujula. Mi deseo es que si yo me paro sobre cierto boton (rollOver) la flecha que esta en el medio gire lentamente hasta señalar dicho boton.
Si alguien me puede ayudar con esto se lo agradeceria en el alma.
Hola osonous, algo que se me ocurre que podria servirte podria ser lo sigueinte: Supongamos que para que la flecha señale el boton la flecha necesita tener una rotacion (_rotation) de 100, entonces podrias hacer algo como esto:
Código :
function flecha(var rotar:Number){
flecha._rotation += (rotar - flecha._rotation)/8;
}
donde rotar es el numero necesario para que la flecha "señale" al boton
entonces tendias que pasarlo como parametro desde el boton o desde donde quieras con:
flecha(100);
eso es solo para el caso del boton q necesite 100 como parametro Espero q el codigo funcione aunque creo que si lo hice aca rapidito porq ya me tnego que ir
Prueba este código o adáptalo a tu gusto. Dada una serie de botones (o MC´s) se crea un Array con sus nombres de instancia y otro con sus ángulos respectivos. Otro MC instanciado como rotor hace de indicador o flecha. Luego en cada botón ponemos sus acciones. Podemos seleccionar pulsando el botón ( la flecha ira hacia allí) o: Moviendo la flecha (rotor) y, al soltarla, esta se irá al botón más cercano y ejecutará sus acciones.
Código :
rotorM = [327,257,219,165,143,126,87,60]; //array de angulos
botonM = [bt1,bt2,bt3,bt4,bt5,bt6,bt7,unbt]; //array de instancias MC´s o botones.
rotor.onEnterFrame =function(){
if(rotoractivo){
rotor._rotation=Math.atan2((_ymouse-rotor._y),(_xmouse-rotor._x))*180/Math.PI;
}
}
rotor.onPress = function(){rotoractivo= true;}
rotor.onRelease = rotor.onReleaseOutside = function(){
rotoractivo= false; cerca2=360;
for (rt=0 ; rt<rotorM.length ; rt++){
cerca = Math.abs((rotor._rotation+360)%360-rotorM[rt]);
if(cerca < cerca2){rota = rt; cerca2 = cerca;}
}
rotar_a(rota);
botonM[rota].onPress();
}
function rotar_a(r){rotor._rotation =rotorM[r];}
//botonera:
bt1.onPress = function(){
rotar_a(0);
trace ("pulsando el "+this);
//aquí la acciones de bt1, igual para cada botón);
}
bt2.onPress = function(){rotar_a(1); trace ("pulsando el "+this)}
bt3.onPress = function(){rotar_a(2); trace ("pulsando el "+this)}
bt4.onPress = function(){rotar_a(3); trace ("pulsando el "+this)}
bt5.onPress = function(){rotar_a(4); trace ("pulsando el "+this)}
bt6.onPress = function(){rotar_a(5); trace ("pulsando el "+this)}
bt7.onPress = function(){rotar_a(6); trace ("pulsando el "+this)}
unbt.onPress = function(){rotar_a(7); trace ("pulsando el "+this)}
calcula y devuelve un valor absoluto en el sig codigo Math.abs() devuelve el valor absoluto de un número y no afecta al valor del parámetro x (numero):
Código :
var numero:Number = -10;
var numeroAbsoluto:Number = Math.abs(numero);
trace(numero); // salida: -10
trace(numeroAbsoluto); // salida: 10