Foros del Web » Creando para Internet » Flash y Actionscript »

menu de botones rotativo

Estas en el tema de menu de botones rotativo en el foro de Flash y Actionscript en Foros del Web. Hola a todos! Soy bastante novato con AS3 y me cuesta entender todavia algunas cosas. A ver si alguien me puede ayudar con esto. Quiero ...
  #1 (permalink)  
Antiguo 13/09/2010, 04:24
 
Fecha de Ingreso: septiembre-2010
Ubicación: Valencia, Spain, Spain
Mensajes: 17
Antigüedad: 14 años, 2 meses
Puntos: 1
menu de botones rotativo

Hola a todos! Soy bastante novato con AS3 y me cuesta entender todavia algunas cosas. A ver si alguien me puede ayudar con esto.

Quiero crear un menu de 5 botones que vayan rotando alrededor de una elipse. He seguido algun tutorial para hacerlo, pero me falta saber como puedo usar los botones que tengo en mi biblioteca usando un array, porque lo que podia hacer era duplicar un unico boton, y yo quiero que los botones sean diferentes.

Os dejo mi codigo para que lo veais y me podais decir algo... (no seais malos conmigo que voy un poco perdido XDD)



//creo el array y las variables de la elipse

var arrayBotones:Array = new Array ('Boton','Boton1','Boton2','Boton3','Boton4');

var ejeX:Number = stage.stageWidth / 2;

var ejeY:Number = stage.stageHeight / 2;

var amplitudX:Number = 180;

var amplitudY:Number = 40;

//creo el menu con los objetos del array en disposicion eliptica

for( var i:int = 0; i < arrayBotones.length; i++ ){

var difAngular:Number = ( Math.PI * 2 ) / 5;

var btnmc:MovieClip = new MovieClip();

btnmc.angulo = difAngular * i;

btnmc.x = Math.cos( btnmc.angulo ) * amplitudX + ejeX;

btnmc.y = Math.sin( btnmc.angulo ) * amplitudY + ejeY;

btnmc.addEventListener( Event.ENTER_FRAME, rotar);

addChild( btnmc );

}


var incrAngulo:Number;

//creo la funcion para rotar el menu

function rotar( event:Event ):void {

incrAngulo = ( ( stage.mouseX - ejeX ) / ejeX ) * 0.1;

event.target.angulo += incrAngulo;

event.target.x = Math.cos( event.target.angulo ) * amplitudX + ejeX;

event.target.y = Math.sin( event.target.angulo ) * amplitudY + ejeY;

event.target.scaleX = 1 + Math.sin( event.target.angulo ) * 0.16;

event.target.scaleY = event.target.scaleX;

}
  #2 (permalink)  
Antiguo 13/09/2010, 04:38
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: menu de botones rotativo

Hola
bueno, pues si entendi bien, los elementos del array son
botones de la biblioteca?
si es así, entonces intenta esto.

Quita esto
var btnmc:MovieClip = new MovieClip();

y luego en donde tenias btnmc usa: this[arrayBotones[i]]

quedando por ej

this[arrayBotones[i]].x = valor;

nos comentas
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 13/09/2010, 04:57
 
Fecha de Ingreso: septiembre-2010
Ubicación: Valencia, Spain, Spain
Mensajes: 17
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: menu de botones rotativo

hola de nuevo

pues si, lo entendiste bien morti

a ver, he seguido tus indicaciones quedando el codigo asi:


var arrayBotones:Array = new Array ('Boton','Boton1','Boton2','Boton3','Boton4');

var ejeX:Number = stage.stageWidth / 2;

var ejeY:Number = stage.stageHeight / 2;

var amplitudX:Number = 180;

var amplitudY:Number = 40;


for( var i:int = 0; i < arrayBotones.length; i++ ){

var difAngular:Number = ( Math.PI * 2 ) / 5;

this[arrayBotones[i]].angulo = difAngular * i;

this[arrayBotones[i]].x = Math.cos( this[arrayBotones[i]].angulo ) * amplitudX + ejeX;

this[arrayBotones[i]].y = Math.sin( this[arrayBotones[i]].angulo ) * amplitudY + ejeY;

this[arrayBotones[i]].addEventListener( Event.ENTER_FRAME, rotar);

addChild( this[arrayBotones[i]] );

}


var incrAngulo:Number;


function rotar( event:Event ):void {

incrAngulo = ( ( stage.mouseX - ejeX ) / ejeX ) * 0.1;

event.target.angulo += incrAngulo;

event.target.x = Math.cos( event.target.angulo ) * amplitudX + ejeX;

event.target.y = Math.sin( event.target.angulo ) * amplitudY + ejeY;

event.target.scaleX = 1 + Math.sin( event.target.angulo ) * 0.16;

event.target.scaleY = event.target.scaleX;

}

pero sigue sin mostrar el menu al ejecutar la pelicula, y me ha salido este error que es la primera vez que lo veo y no lo entiendo

TypeError: Error #1010: Un término no está definido y no tiene propiedades.
at menu_fla::MainTimeline/menu_fla::frame1()


Gracias por la ayuda
saludos!
  #4 (permalink)  
Antiguo 13/09/2010, 11:07
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: menu de botones rotativo

bueno, el error se da porque esta tratando de agregar un elemento que
no existe en ese momento de ejecución

uhm, pregunto algo, los botones tienen nombre de instancia en sus propiedades?
si la respuesta es false, a ponerlos y que se llamen igual como estan en el array
y luego probar de nuevo
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 13/09/2010, 15:55
 
Fecha de Ingreso: septiembre-2010
Ubicación: Valencia, Spain, Spain
Mensajes: 17
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: menu de botones rotativo

a ver, no tienen nombre de instancia, simplemente los vinculé como me indicaba el tutorial.

no los tengo en la escena, se supone que se cargan directamente al ejecutar addChild...

igual tendría que empezar de nuevo porque veo que me va a costar mas de lo que pensaba XD

gracias por la ayuda :)
  #6 (permalink)  
Antiguo 13/09/2010, 17:34
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: menu de botones rotativo

Cita:
Iniciado por Fran1985 Ver Mensaje
a ver, no tienen nombre de instancia, simplemente los vinculé como me indicaba el tutorial.

no los tengo en la escena, se supone que se cargan directamente al ejecutar addChild...

igual tendría que empezar de nuevo porque veo que me va a costar mas de lo que pensaba XD

gracias por la ayuda :)
a ver, cual tutorial es???
sip, si en el tuto te muestran el resultado final funcionando,
tal vez te falta algún paso
intentalo again
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: as3
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:39.