Comunidad de diseño web y desarrollo en internet online

Drag circular

Citar            
MensajeEscrito el 23 Sep 2008 09:18 am
Hola a tod@s,

Tengo que hacer una drag de una mc sobre una guía circular, algo parecido al control de rotación de http://www.spreadshirt.net/es/ES/Crear-camisetas/Disenador-59/

He intentado algo como esto sobre una animación de 360 frames en el que el botón completa un giro entero sobre una guía circular, pero no va muy fino:

Código :

var dragging:Boolean = false;

ball_button_mc.onPress = function () {
      dragging = true;
   }
ball_button_mc.onRelease = function () {
      dragging = false;
   }
ball_button_mc.onReleaseOutside = function () {
      dragging = false;
   }

onEnterFrame = function() {
   if (this.dragging == true){
      // Calcula Angulo del vector
      var MouseX:Number = this._xmouse;
      var MouseY:Number = this._ymouse;
      var angle:Number = (Math.atan (MouseY / MouseX) * 180 / Math.PI);
      
      if (MouseX>=0 and MouseY>=0) {
      }else if (MouseX<0 and MouseY>=0) {
         angle = (angle+180);
      }else if (MouseX<0 and MouseY<0) {
         angle = (angle+180);
      }else if (MouseX>=0 and MouseY<0) {
         angle = (angle+90+269);
      }
      
      //Calcular movimiento del Planet
      var N:Number = Math.round(angle * this._totalframes / 360);
      this.gotoAndStop(N);
   }
}
stop();


¿Alguien tiene una solución al problema?

Gracias por adelantado.

Por hermesduato

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Sep 2008 10:23 am
No es tan complejo.
Solo un MC rotor (un solo frame con un punto rojo con el centro desplazado), el dibujo del círculo y le añadimos un campo de texto dinámico con la variable angulo para visualizar o usar el valor de giro.

Código ActionScript :

rotor.onPress  = function(){
   rotor.onEnterFrame =function(){
      angulo =(450+ Math.round(rotor._rotation = Math.atan2((_ymouse-rotor._y),(_xmouse-rotor._x))*180/Math.PI))%360;
   }
}
rotor.onRelease = rotor.onReleaseOutside = function(){delete rotor.onEnterFrame}


Este es el ejemplo con ese código:


y este es el FLA

También puedes mirar:
ESTE POST

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 23 Sep 2008 11:34 am
Teseo,

Muchisimas gracias por la respuesta.

Y prometo no duplicar más posts ;)

Por hermesduato

3 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.