28/10/2011, 07:28
|
| | Fecha de Ingreso: octubre-2011
Mensajes: 7
Antigüedad: 13 años Puntos: 0 | |
Problemas con funciones y array Hola a todos! soy nuevo por aquí... y espero que me puedan ayudar.
Mi problema es el siguiente: Tengo un menú con varios botones, de momento sólo hay cuatro, pero tengo la intención de añadir más. Los tengo en la biblioteca con un nombre de vinculación y los quiero posicionar en forma circular en la escena, y que vayan girando según la posición del ratón. He conseguido posicionarlos correctamente, el problema viene cuando creo la función para que giren. Este es mi código:
import flash.display.MovieClip;
import flash.events.Event;
stop();
//creo un array con los nombres de vinculacion de los botones var arrayBotones:Array = new Array(boton1,boton2,boton3,boton4);
//leo la cantidad de elementos que tiene el array var cant:int = arrayBotones.length;
//defino la amplitud de la elipse y la posicion var amplitudX:Number = 250;
var amplitudY:Number = 60;
var ejeX:Number = stage.stageWidth/2;
var ejeY:Number = (stage.stageHeight/2) + 120;
//defino la distancia en radianes que separa cada boton var difAngulo:Number = (Math.PI * 2) / cant;
//recorro el array con un bucle for for(var i:int=0; i < cant; i++){
//asocio el indice del array a una variable cada vez que se lee el bucle y lo asocio a MovieClip var clase:Class = arrayBotones[i];
var botonCargado:MovieClip = new clase as MovieClip;
//calculo la posicion en la elipse para cada boton var posicion = difAngulo * i;
//calculo en x e y los pixeles correspondientes a la posicion en radianes botonCargado.x = Math.cos(posicion) * amplitudX + ejeX;
botonCargado.y = Math.sin(posicion) * amplitudY + ejeY;
botonCargado.addEventListener(Event.ENTER_FRAME, orbitar);
//añado el boton addChild(botonCargado);
}
function orbitar (event:Event):void{
var incremento:Number = ((stage.mouseX - ejeX) / ejeX) * 0.1;
var angulo:Number;
angulo += incremento;
event.target.x = Math.cos(angulo) * amplitudX + ejeX;
event.target.y = Math.sin(angulo) * amplitudY + ejeY;
}
Cuando se ejecuta la función, todos los botones se ponen en la esquina superior izquierda de la escena. También conseguí que giraran, pero se superponían unos con otros... no había separación entre ellos. ¿Alguien puede indicarme cómo solucionarlo? Le he dado muchas vueltas y ya no se me ocurre qué hacer. |