Comunidad de diseño web y desarrollo en internet online

pequeño error de programación en AS2

Citar            
MensajeEscrito el 16 Ene 2010 06:31 am
Primero que todo muchas gracias por entrar e interesarse :-D ... tengo un pequeño problema con un código en AS2... el problema es simple... tengo 5 botones y al pasar por encima (rollOver) de cada botón se llama a una función que reproduce un MovieClip específico. Y al salirse del botón (rollOut) se hace que dicho MovieClip que estaba reproduciendose se desvanezca por el parametro Alpha y vuelva al fotograma 1.

Hasta allí simple todo... el problema consta en que si me muevo muy rápido sobre los botones, las animaciones se congelan y no se desvanecen todas ni regresan al fotograma 1...

Lo hago mediante dos funciones que declaré yo (una para desvanecer y otra para hacer play) y lo he probado sin las funciones y tampoco lo logro... alguien puede ayudarme? aquí dejo un ejemplo del fla en que estoy trabajando dentro de un zip :) .

Gracias por adelantado a todos :-D

Para descargar el archivo ejemplo.fla dentro de un rar hagan click aqui http://www.mediafire.com/?tbmwojg3yne

Por WindWarrior

3 de clabLevel



 

Isla de Margarita, Venezuela!

firefox
Citar            
MensajeEscrito el 16 Ene 2010 06:35 am
Escribe tus codigos, tu rar esta mal, "formato inesperado" :I

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 16 Ene 2010 06:52 am
upssss je je je gracias por avisarme... aquí les dejo directamente el swf para que vean el funcionamiento y el error al que me refiero...


[flash width=720 height=480]http://www.grupo-blu.com.ve/ejemplo.swf[/flash]


y bueno. tengo todo el código en un fotograma (exepto que en uno de los botones la llamada a las funciones está en el boton propiamente)

Código ActionScript :

_root.tv3.onRollOver = function() {
   darleplay(_root.titulofoto);
};
_root.tv3.onRollOut = function() {
   desvanecer(_root.titulofoto);
};
_root.tv2.onRollOver = function() {
   darleplay(_root.tituloaudio);
};
_root.tv2.onRollOut = function() {
   desvanecer(_root.tituloaudio);
};
_root.tv1.onRollOver = function() {
   darleplay(_root.titulocorpo);
};
_root.tv1.onRollOut = function() {
   desvanecer(_root.titulocorpo);
};
_root.tv4.onRollOver = function() {
   darleplay(_root.tituloilustrcion);
};
_root.tv4.onRollOut = function() {
   desvanecer(_root.tituloilustrcion);
};
function desvanecer(destino) {
   _root.onEnterFrame = function() {
      destino._alpha -= 20;
      destino.stop();
      if (destino._alpha<=0) {
         destino.gotoAndPlay(1);
         delete this.onEnterFrame;
      }
   };
}
function darleplay(origen) {
   origen._alpha = 100;
   origen.play();
}


de todas formas aquí pueden descargarse el .fla (en flash cs4) [url=http://www.grupo-blu.com.ve/ejemplo.fla][/url]

Muchas gracias nuevamente por el interés y la ayuda :D !!!

Por WindWarrior

3 de clabLevel



 

Isla de Margarita, Venezuela!

firefox
Citar            
MensajeEscrito el 17 Ene 2010 03:23 am
sigue estando en archivo inesperado :I, pero me puse a probar con unos clips que yo hice, la verdad no entiendo que hacen tus MCs
pero intenta poniendo un _root.onEnterFrame que cheque a los rollovers y outs a la mejor eso es, segun lo que yo hice, son 4 mcs que son rojo azul verde y negro y cuando daba un roll over sobre los botones se hacian de otro color y si me quitaba se desvanecian, me volvia aponer sobre el boton y se cambiaban de color me quitaba y se desvanecian, lo que se suponedeberia hacer lo hacia.
Intenta en otro lugar para pasarme el .fla o dime que hacen tus animaciones en los MCs U_U

Por el davo29

253 de clabLevel



Genero:Masculino  

Chihuahua :D!

msie8
Citar            
MensajeEscrito el 17 Ene 2010 05:10 pm
Bueno, me complace anunciarles a todos que logré solucionar el problema je je je, porque aunque no se mucho de AS2 intuí cual era el problema y logré solucionarlo :-D !!!

Ahora les explico como:

El problema radicaba en que la función "desvanecer" que había creado llamaba a una función _rooot.onEnterFrame y entonces cuando se le aplicaba la función desvanecer a varios movieclips seguidamente todos utilizaban la función _root.onEnterFrame, es decir, ejecutaban una función en la línea de tiempo de la raíz de la película, lo cual causaba que si un movieclip utilizaba la función y otro movieclip se ejecutaba, interrumpía al primero y lo dejaba detenido.

La solución fue muy simple. en la línea _root.onEnterFrame cambié la parte de "_root" por una variable que contiene el nombre de cada movieclip que es llamado, la variable se llama "destino" y así cada función se ejecuta independientemente en la línea de tiempo de cada movieclip por separado sin interrumpirse :mrgreen: !!!

Je je je eso fue todo... gracias a todos los que se interesaron :D!!!

Por WindWarrior

3 de clabLevel



 

Isla de Margarita, Venezuela!

firefox
Citar            
MensajeEscrito el 17 Ene 2010 09:48 pm
Como tip, podrías haber creado una única función para los botones y hubiera quedado muuucho más prolijo.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 17 Ene 2010 11:10 pm

Hernán escribió:

Como tip, podrías haber creado una única función para los botones y hubiera quedado muuucho más prolijo.

Saludos, Hernán . -


... Y como se hace eso? ja ja ja no soy muy diestro en esos asuntos ^^ je je je

Por WindWarrior

3 de clabLevel



 

Isla de Margarita, Venezuela!

firefox
Citar            
MensajeEscrito el 17 Ene 2010 11:26 pm
Yo lo hubiera hecho así:

Código ActionScript :

function desvanecer(destino:MovieClip):Void{ 
      destino._alpha -= 20; 
      destino.stop(); 
      if (destino._alpha<=0) { 
         destino.gotoAndPlay(1); 
         clearInterval(id);
      } 
} 
function darleplay():Void { 
   this.goto._alpha = 100; 
   this.goto.play();
}
function rollOutButton():Void{
   id = setInterval(desvanecer,100,this.goto);
}
var Goto_Arr:Array = [titulocorpo,tituloaudio,titulofoto,tituloilustrcion];

for(var i=1;i<=4;i++){
   this["tv"+i].goto = Goto_Arr[i];
   this["tv"+i].onRollOver = darleplay;
   this["tv"+i].onRollOut = rollOutButton;
}


Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 18 Ene 2010 05:45 am
Wao! gracias je je je, no se si funciona, pero igual gracias por el código :D !

Por WindWarrior

3 de clabLevel



 

Isla de Margarita, Venezuela!

firefox
Citar            
MensajeEscrito el 18 Ene 2010 06:02 am

WindWarrior escribió:

Wao! gracias je je je, no se si funciona, pero igual gracias por el código :D !


Yo tampoco se si funciona porque lo he escrito aquí, es para darte la idea. Recuerda que siempre es mejor trabajar prolijo, permite que los códigos sean extensibles, más eficientes y claro reutilizables.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox

 

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