Cristalab

                 ¿Quieres registrarte?

Efecto de anillo 3D en Actionscript 2

Por: feler
3 de Diciembre del 2006
221 de clabLevel
Otros artículos de feler
17,067 visitas

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();


Artículos Relacionados


Etiquetas actionscript

Comentarios | Enviar un comentario
el fla puedes mandarlo a fred
webmaster@cristalab.com

mientras puedes colgarlo en algun hosting gratuito
Por: FeNtO
Muy bueno :D
Por: Suriv
Genial :o Que cabrón: No tengo palabras xD Estupendo
Por: nestorrente
Realmente un buen tip. Sólo corregí detalles de redacción y le puse 10 anillos por defecto. Para que se vea mejor al ser ejecutado :)
Por: Freddie
Se crean interesantes efectos si aumentan la cantidad de la variable cCount:Number = 80; Te felicito....
Por: torrealbaruben
esta genial ........quien puede hacer algo mejor?.............mu gueno.
Por: javiermillar_blog
hey muy bueno ^^ *cacharrea
Por: Finvara
Tengo una inquietud, alguien podria explicarme como funciona lo de los colores, exactamente la formula que le da el valor a la variable col, muchas gracias...
Por: Finvara
pues yo tengo una duda, al codigo se le pueden dar diferentes usos cargando una imagen pequeña y que el cCount sea 1, pero tratando de que sean 2 imagenes distintas o 3, o 4 etc..

se puede cargar en el mismpo Array todas las imagenes diferentes deseadas?????, yo trate de hacerlo pero la unica forma que encontre fue crear un array por cada imagen, pero para 10 imagenes el codigo se hace inmenso, sin mencionar que si hay algun error en el codigo el Flash se muere al tratar de compilarlo.

me salio el mensaeje de error en una de las librerias de C ,

si me pueden ayudar a responder si es posible usar un solo Array, le estara agradecido.

buen dia.
Por: Seele_blog
wow!
y hasta podes interactuar con la ruedita del mouse :)

muy weno, si senior ;)
Por: Acreonte
me da error de sintaxis
Por: toga_blog
Del Putas! Muy Bueno, me muero por ver mas ejemplos tan ilustrativos como ese

=)
Por: Animalejo_blog
que bueno!!!
se le puede agregar muchas mas funciones cierto???
Por: pabletein_blog
Estoy necesitando hacer lo siguiente con este circulo (que esta buenisimo!!!).
He logrado que ,en vez de que sean todos los clips iguales, que sean todos distintos y ademas, le he agredado unos botones dentro y alguna otra cosa.
El problema es el siguiente:
Como puedo hacer para contrlar estos MC que estan dentro del circulo, o como puedo hacer para hacerlo desaparecer y aparece al circulo entero con un boton ?
estube probando de meterlo dentro de otro MC, pero no me saio, ademas no lo puedo controlar (me gustaria hacerlo desaparecer con fade, y cosas asi)
Gracias!!!!!!!!!!!!!!

Pabletein

Cada dia aprendiendo mas!!!
Por: una pregunta_blog
Requetestupendísimo!
Por: Sisco
hey q tal la verdad q nose ocmo se hace, bueno lo unico q he hecho es poner una circunferencia con relieve q lo hise en pohothsop, y bueno lo pus eocmo clip de pelicula y en el primer fotograma puse el codigo y solo me sale el circulo pero le pongo el mouse encima y no salenada , solo estatico, especiquen bien q mas hay q hacer, si es q hay q poner otro en otro fotograma la verdad qkiero ver como keda ayudenme pues.
Por: pedritodolores
hey q tal la verdad q nose ocmo se hace, bueno lo unico q he hecho es poner una circunferencia con relieve q lo hise en pohothsop, y bueno lo pus eocmo clip de pelicula y en el primer fotograma puse el codigo y solo me sale el circulo pero le pongo el mouse encima y no salenada , solo estatico, especiquen bien q mas hay q hacer, si es q hay q poner otro en otro fotograma la verdad qkiero ver como keda ayudenme pues.

tenes que vincular el clip como circulo osea en biblooteca clik derecho vinculary listo.
Por: cat_blog
ami nunka me resulta ni una wea
Por: yo_blog
waoooooooo esta genial! si hubieran mas tips seria TODO! gracias
Por: enrique-blog
1152: Existe un conflicto con la definición heredada flash.display:DisplayObject.x del espacio de nombres public.

esto es lo que me sale en panel de salida, si podeis ayudar
Por: kani-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.