Comunidad de diseño web y desarrollo en internet online

Efecto Flotar (tengo un pequeño error)

Citar            
MensajeEscrito el 22 Mar 2009 08:45 pm
Hola, estoy haciendo que un mc (una bola) q dentro de ella hay otro mc (q es un texto), haga el efecto de flotar, pero q no lo haga sólo de arriba a abajo, sino más bien un pequeño circulo.

El efecto lo he conseguido, pero tengo un problema, y es que el mc del texto q se encuentra dentro del mc bola (q es la q flota) hace una especie de vibración, es decir q no flota al compás de la bola, y queda feo, el script es éste:

Código ActionScript :

function flotar(mc){
   y = 0;
   x = 10;
   ampl = 10;
   eje_y = mc._y;
   eje_x = mc._x;
   incrx = 0.05;
   mc.onEnterFrame = function() {
      mc._y = (Math.cos(y)*ampl)+eje_y;
      y += incrx;
     mc._x = (Math.cos(x)*ampl)+eje_x;
     x += incrx;
   };
}
flotar(fotografia_mc);


Sin embargo tengo otro script en el cual no ocurre ésto , de descompensación. Pero no consigo q tb se mueva en el eje x, ya q si pongo dicho eje, sólo se mueve en él, y no en ambos. Este es el otro script.

Código ActionScript :

function sinuoide(mc:MovieClip, property:String, lambda:Number, speed:Number):Void {
   mc.i = 0;
   mc.init = mc[property];
   mc.onEnterFrame = function() {
      mc[property] = this.init + lambda*Math.sin(this.i);
      this.i += speed;
   };
}
sinuoide(fotografia_mc, "_y", 10, .1);


Si alguién pudiera decirme el porqué un mc dentro del mc q pongo a flotar del primer script, me "vibra" y como puedo arreglarlo, fenomenal... si no se entiende lo que quiero decir con lo de "vibrar" por favor, decirmelo, y lo subo para que lo vean.

Si por el contrario no tiene arreglo, pues... mi segunda opción es el otro script pero hacer q se mueva en ambos ejes a la vez, igual q el primero.

Mil gracias a todos por vuestra ayuda.

Por Hapki

Claber

268 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Mar 2009 06:00 am
Hola, bueno, lo que pasa es que los campos de texto dinamicos no se pueden representar en posiciones de comaflotante, lo que significa que siempre se vera pausado, mira has una prueba con el primer codigo, cambialo por este y veras a que me refiero:

Código ActionScript :

function flotar(mc){ 
   y = 0; 
   x = 10; 
   ampl = 10; 
   eje_y = mc._y; 
   eje_x = mc._x; 
   incrx = 0.05; 
   mc.onEnterFrame = function() { 
      mc._y = Math.round((Math.cos(y)*ampl)+eje_y); 
      y += incrx; 
     mc._x = Math.round((Math.cos(x)*ampl)+eje_x); 
     x += incrx; 
   }; 
}
flotar(fotografia_mc); 

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 23 Mar 2009 08:39 am
Perfecto!! Ahora ya funciona perfecto.... aunque el texto q tengo, lo tengo como un .png , no como texto, es por eso que no acabo de entender, pq si fuese texto lo entendería... pero el texto es una imagen convertida a mc, y metida dentro de fotografia_mc...

Y entonces, sólo poniendo el Math.round, es decir, al redondear, ya deja de existir el problema? es sólo por eso? curioso...

Mil gracias Maestro! :D

Por Hapki

Claber

268 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Mar 2009 09:01 am
ahhh bueno, si tu texto es mas bien una imagen png, bastara con que abras la biblioteca y en las propiedades de la imagen activa la casilla que dice "permitir suavizado", con eso funciona con tu codigo anterior, lo que hacia el round era mas bien mostrarte las posiciones x y sin puntos decimales. de todas formas modifique la segunda funcion para que flotara en circulos, miralas aver cual te convence mas:

Código ActionScript :

sinuoide(fotografia_mc, 10, .1);

function sinuoide(mc:MovieClip, lambda:Number, speed:Number):Void { 
   mc.i = 0; 
   mc.initx = mc._x; 
   mc.inity = mc._y; 
   mc.onEnterFrame = function() { 
      mc._x = this.initx + lambda*Math.sin(this.i); 
     mc._y = this.inity + lambda*Math.cos(this.i); 
      this.i += speed; 
   }; 
}


:D

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 23 Mar 2009 09:12 am
Mira aqui te dejo el codigo pero mejorado. ahora todos los MC pueden flotar

Código ActionScript :

MovieClip.prototype.flotar = function(lambda:Number, speed:Number):Void
{
   var i:Number=0, j:Number = 10; 
   this.onEnterFrame = function() 
   {
      this._x += lambda * Math.cos( i += speed );
      this._y += lambda * Math.sin( j += speed );
   };
}

fotografia_mc.flotar(1, .05);


Ps. ¡Todos Flotan!

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 23 Mar 2009 11:35 am
Eyy Gracias LongeVie!!! :D ...

Pero en estos últimos scripts q me das, sigue habiendo un pelín de descompensación , a pesar de que he hecho lo de "permitir suavizado" q me decías. Esa descompensación no es muy apreciable, pero la hay... sin embargo en el script primero, con el que empezamos no hay ninguna descompensación... así q me quedaré con el primero.... aunque el circulo descrito me gusta más el del segundo, ya q el recorrido es "más limpio", pero esa pequeña descompensación lo afea, por muy pequeña q sea :S ....

Pero igualmente, te lo agradezco enormemente toda tu ayuda :D

Y aprovecho para hacerte una pregunta, ¿sabes de algún libro, o videotutorial, o buen tutorial online, sobre matematicas para as?

Gracias!!

Por Hapki

Claber

268 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Mar 2009 06:53 pm
:( la verdad no se de ninguno, pero mira te dejo un link del que puedes aprender mucho sobre matematica con ejemplos practicos y bien explicados:

http://www.sargentoweb.com/

Suerte ;)

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 23 Mar 2009 08:11 pm
Una vez más... GRACIAS!! :D

PD: Un día de estos te voy a tener q invitar a una cervecita o algo ehh ;)

Por Hapki

Claber

268 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Mar 2009 08:16 pm
:beer: :cool: Ya dijiste, yo dispuesto. :P

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 23 Mar 2009 08:44 pm
Pues si, queda pendiente, q no se olvide ;)

Y ahora... voy a abusar un poquito más de tí, si me dejas :D ... es que estoy con el script, y me ha surgido la pregunta de: ¿ Sería posible dejar el movimiento sólo en el eje x , y que en el movimiento del eje y, en vez de ser un desplazamiento sea un encogimiento? (entiéndase por encogimiento, que se contraiga el mc en un 20% aprox de su tamaño actual?

PD: Recuerdo el script aqui, por si nos liamos entre los dos expuestos. Es éste:

Código ActionScript :

function flotar(mc){  
   y = 0;  
   x = 10;  
   ampl = 10;  
   eje_y = mc._y;  
   eje_x = mc._x;  
   incrx = 0.05;  
   mc.onEnterFrame = function() {  
      mc._y = Math.round((Math.cos(y)*ampl)+eje_y);  
      y += incrx;  
     mc._x = Math.round((Math.cos(x)*ampl)+eje_x);  
     x += incrx;  
   };  
} 
flotar(fotografia_mc);

Por Hapki

Claber

268 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Mar 2009 09:00 pm
Hola, que tal esto?

Código ActionScript :

function flotar(mc){   
   eje_y = 110;
   amplitud_y = 5;
   angulo = 0;
   x = 10;   
   ampl = 10;   
   eje_x = mc._x;   
   incrx = 0.05;   
   mc.onEnterFrame = function() {   
      mc._x = Math.round((Math.cos(x)*ampl)+eje_x);   
      y1 = ( Math.sin( angulo * ( Math.PI / 180 ) ) * amplitud_y ) + eje_y;
      this._yscale = this._xscale = y1 - 10;
      angulo += 3;
      x += incrx;   
   };   
}  
flotar(fotografia_mc); 

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 23 Mar 2009 09:18 pm
Ea LongeVie, pues ya te debo dos cervecitas ;)

Mil gracias!!! :D Eres un crack!

Por Hapki

Claber

268 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Mar 2009 09:19 pm
:beer: :beer:

^^

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox

 

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