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

Menú giratorio AS2

Estas en el tema de Menú giratorio AS2 en el foro de Flash y Actionscript en Foros del Web. Hola a todos!! He estado probando cosas de as2, que hacía tiempo que no tocaba nada de flash. Quería hacer un menú con 4 botones ...
  #1 (permalink)  
Antiguo 04/10/2011, 05:58
 
Fecha de Ingreso: septiembre-2010
Ubicación: Valencia, Spain, Spain
Mensajes: 17
Antigüedad: 14 años, 2 meses
Puntos: 1
Menú giratorio AS2

Hola a todos!!

He estado probando cosas de as2, que hacía tiempo que no tocaba nada de flash. Quería hacer un menú con 4 botones de diferentes colores y que van rotando en elipse. Cada botón es un movieclip que tiene una animación fade in y fade out.

El problema es, que si me pongo en cualquier botón, se anima, pero se detiene, y el resto sigue girando, con lo cual, pierde su posición y se amontonan los botones.

He de decir, que seguí un tutorial para hacer que los botones giraran, y lo hacen si se desplaza el ratón, me gustaría que giraran sin estar dependientes del movimiento del ratón, pero no se me ocurre como hacerlo...


Dejo el código as2:

En la escena, sólo hay un fotograma:

stop();

var botones:Number = 4;
var incr:Number = ( 2 * Math.PI ) / botones;
var amp_x:Number = 270;
var amp_y:Number = 60;
var eje_x:Number = Stage.width / 2;
var eje_y:Number = Stage.height / 2;
var speed:Number=0.05;

for ( i = 0; i < 5; i++){
_root.attachMovie( "boton" + i, "boton" + i, 4 + i);
ref = _root["boton" + i];
ref.angle = incr * i;
ref.onEnterFrame = mover;
}

function mover(){
this._x = Math.cos(this.angle) * amp_x + eje_x;
this._y = Math.sin(this.angle) * amp_y + eje_y;
var s = this._y /(eje_y+amp_y);
this._xscale = this._yscale = s*100;
this.angle += this._parent.speed;
this.swapDepths(Math.round(this._xscale) + 100);
}

El código de cada botón:

En una capa, con 10 fotogramas, el primero es clave:

onEnterFrame = function(){
this._x = (Math.cos(this.angulo) * _root.amp_x) + _root.eje_x;
this._y = (Math.sin(this.angulo) * _root.amp_y) + _root.eje_y;
this._yscale = this._xscale = (this._y - 350) * 0.7 + 100;
this.swapDepths(this._y);
this.angulo += _root.vel;
}

onRollOver=function(){
onEnterFrame=function(){
if(_currentframe!=10){
this.nextFrame();
}else{
stop();
delete this["onEnterFrame"];
}
}
}

onRollOut=function(){
onEnterFrame=function(){
if(_currentframe!=1){
prevFrame();
}else{
stop();
delete this["onEnterFrame"];
}
}
}


En otra capa, 10 fotogramas, el primero y el ultimo claves contienen un stop(); para detener la animación.

Espero que alguien me pueda orientar para poder solucionarlo. Gracias!!

Última edición por Fran1985; 06/10/2011 a las 08:15
  #2 (permalink)  
Antiguo 06/10/2011, 08:16
 
Fecha de Ingreso: septiembre-2010
Ubicación: Valencia, Spain, Spain
Mensajes: 17
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Menú giratorio AS2

He arreglado un poco el código, usando variables. Además he conseguido que se mueva el menú sin estar dependiendo del ratón. Pero los botones siguen parándose cuando me pongo encima, y después siguen quedándose quietos.

Por favor, que alguien me ayude... :(

En la segunda columna de código quité esto:


onEnterFrame = function(){
this._x = (Math.cos(this.angulo) * _root.amp_x) + _root.eje_x;
this._y = (Math.sin(this.angulo) * _root.amp_y) + _root.eje_y;
this._yscale = this._xscale = (this._y - 350) * 0.7 + 100;
this.swapDepths(this._y);
this.angulo += _root.vel;
}

Etiquetas: animacion, as2, botones, entrada, giratorio, rotatorio, salida
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 12:27.