Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/10/2011, 07:28
Helios85
 
Fecha de Ingreso: octubre-2011
Mensajes: 7
Antigüedad: 12 años, 6 meses
Puntos: 0
Exclamación 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.