Comunidad de diseño web y desarrollo en internet

¿Olvidaste tu usuario o clave? «
registrate

Cerrar

Efecto de anillo 3D en Actionscript 2

Lo que tenemos que hacer antes de programar es crear un clip de película con vinculación circulo. El contenido de este clip puede ser cualquier cosa. Por ejemplo, un circulo.

Lo que hacemos con este código es hacer un anillo 3D de círculos. Si apretamos las teclas Arriba y Abajo aumenta el número de círculos o disminuye. La posición vertical del ratón asigna el sentido de rotación y la vertical la inclinación.

El código va en el primer fotograma:

Código :

var x:Number = 275;
var y:Number = 200;

var h:Number = 0;
var w:Number = 300;

var c:Array = [];
var cCount:Number = 10;

var theta:Number = 0;

function init() {   
   for (var i:Number =0; i < cCount; i++) {
      var circulo:MovieClip = _root.attachMovie("circulo", "circulo_"+i, i, {
          _x: x + w/2*Math.sin(Math.PI*2*i/cCount),
          _y: y + h/2*Math.cos(Math.PI*2*i/cCount)
          });
      c.push(circulo);
      
      var col:Color = new Color(circulo);
      var o = {
         r: 255*(2*Math.abs(i-cCount/2)/cCount),
         g: 100+155*(2*Math.abs(i-cCount/2)/cCount),
         b: 100
      };
      col.setRGB((o.r<<16)+(o.g<<8)+o.b);
   }
}

function onEnterFrame() {
   theta += 0.02 *Math.PI*(_root._xmouse-Stage.width/2)/Stage.width;
   theta = (theta-Math.PI)%(2*Math.PI)+Math.PI;
   theta = (theta+Math.PI)%(2*Math.PI)-Math.PI;
   
   h = (_root._ymouse - Stage.height/2)*0.4;
   
   for (var i in c) {
      var circulo = c[i];
      
      var t:Number = Math.PI*2*i/cCount + theta;
      t = (t-Math.PI)%(2*Math.PI)+Math.PI;
      t = (t+Math.PI)%(2*Math.PI)-Math.PI;
      
      circulo._x = x+w/2*Math.sin(t);
      circulo._y = y+h/2*Math.cos(t);
      
      circulo._xscale = circulo._yscale = 70+30*Math.cos(t);
      circulo._xscale *= Math.cos(t);
      
      t = 1 - Math.abs(t)/Math.PI;
      circulo.swapDepths(Math.round(t*2*cCount));
   }
}

Mouse.addListener(this);
this.onMouseWheel = function(d) {
   while (c.length > 0) c.pop().removeMovieClip();
   cCount = Math.max(cCount+d, 1);
   init();
}
Key.addListener(this);
this.onKeyDown = function() {
   if (Key.getCode() == Key.UP)
      this.onMouseWheel(1);
   else if (Key.getCode() == Key.DOWN)
      this.onMouseWheel(-1);
}

init();

 

 

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate