Foros del Web » Creando para Internet » Flash y Actionscript »

Problema con el tiempo !!!!

Estas en el tema de Problema con el tiempo !!!! en el foro de Flash y Actionscript en Foros del Web. Hola, no entiendo la lógica de un flash, que por desgracia no hice yo y me toca modificar En todos los frames hay pausas y ...
  #1 (permalink)  
Antiguo 08/06/2005, 18:49
 
Fecha de Ingreso: febrero-2005
Mensajes: 135
Antigüedad: 12 años, 9 meses
Puntos: 0
Problema con el tiempo !!!!

Hola, no entiendo la lógica de un flash, que por desgracia no hice yo y me toca modificar

En todos los frames hay pausas y luego acciones, el problema llega cuando quiero modificar las pausas o incluso quitarlas ! ya que a pesar de que el frame tenga un stop(); aun así se sigue saltando al siguiente.

Pongo el código de dos frames para muestra:

Frame 18:

stop();
tiempo = 1;
deten = function () {
nextFrame();
clearInterval(m);
};
m = setInterval(deten, tiempo * 1000);
//
layout1_mc.setMask(mascara_mc);
persona_mc.setMask(mascara2_mc);
//
persona_mc.onEnterFrame = function () {
this._x += (440-this._x)/3;
this._y += (170-this._y)/3;
}

Frame 19:

stop();
//tiempo = 3.5;
tiempo = 6;
deten = function () {
nextFrame();
clearInterval(m);
};
m = setInterval(deten, tiempo * 1000);
//
ubica2_mc.onEnterFrame = function() {
this._xscale += (105 - this._xscale) / 3;
this._yscale += (105 - this._yscale) / 3;
this._x += (255 - this._x) / 3;
this._y += (200 - this._y) / 3;
};
//
layout2_mc.onEnterFrame = function() {
this._xscale += (360 - this._xscale) / 3;
this._yscale += (360 - this._yscale) / 3;
this._x += (300 - this._x) / 3;
this._y += (600 - this._y) / 3;
};

Mas o menos son similares las funciones de los siguientes frames, pero al intentar aumentar unos segundos en cualquiera de los frames, me desfasa drasticamente los siguientes haciendo locuras....


Alguna idea?
  #2 (permalink)  
Antiguo 09/06/2005, 01:03
 
Fecha de Ingreso: mayo-2005
Ubicación: Lima
Mensajes: 160
Antigüedad: 12 años, 6 meses
Puntos: 0
ten en cuenta que aún cuando haya un stop(); el AS contenido en ese frame se va ejecutar de todas formas (stop(); detiene la reproducción no la ejecución de AS)
Si se detiene con un stop(); y más abajo hay un play(); nextFrame(); gotoAndPlay(); o similares (una funcion) entonces se continuará la reproducción....
  #3 (permalink)  
Antiguo 09/06/2005, 10:07
 
Fecha de Ingreso: febrero-2005
Mensajes: 135
Antigüedad: 12 años, 9 meses
Puntos: 0
Gracias, si tengo claro que el AS se seguirá ejecutando, pero de todas formas salta al siguiente frame a pesar de quitar todos los play() nextFrame() etc. y solo dejando el stop()

Por qué pasa eso ?? No lo entiendo

Pongo los ejemplos para que se entienda mejor mi problema:

Así debe de correr
http://tecnovicom.com/multimedia/correcto.swf

Al quitar una pausa y dejar solo el stop(); aun sigue corriendo la película y se desfasan las acciones en cada uno de los frames
http://tecnovicom.com/multimedia/desfasado.swf
  #4 (permalink)  
Antiguo 09/06/2005, 22:49
 
Fecha de Ingreso: mayo-2005
Ubicación: Lima
Mensajes: 160
Antigüedad: 12 años, 6 meses
Puntos: 0
Alguna otra linea de tiempo puede estar controlando la linea de tiempo principal (AS en otros movieclips por ejemplo)
  #5 (permalink)  
Antiguo 09/06/2005, 23:25
 
Fecha de Ingreso: febrero-2005
Mensajes: 135
Antigüedad: 12 años, 9 meses
Puntos: 0
Ya encontré el error. No entiendo por qué pero en el primer frame de la toda la movie, habia una instruccion de pausa que estaba afectando a todos los frames precedentes en la movie, lo cual hacia que corriera la película aun con los stop() en cada frame. A qué puede deberse esto? a caso el primer frame dicta el comportamiento de los siguientes frames? Nunca había visto esto.

Gracias por las sugerencias !
  #6 (permalink)  
Antiguo 10/06/2005, 08:52
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 14 años, 10 meses
Puntos: 1
Hola: por lo que veo, le estas diciendo que se detenga con el stop() y al mismo tiempo que vaya al nextframe con la función que ejecutas con el setinterval, es contradictorio.

Además tene presente que en la ayuda de flash te aclara que cuando utilizas el setinterval debes colocarle un updateAfterEvent() para asegurarte el buen funcionamiento.

Acá te copio la ayuda

Descripción
Función; llama a una función, un método o un objeto a intervalos regulares mientras se reproduce un archivo SWF. Puede utilizar una función de intervalo para actualizar variables desde una base de datos o actualizar una visualización de tiempo.

Si el valor de interval es menor que la velocidad de fotogramas del archivo SWF (por ejemplo, 10 fotogramas por segundo [fps] equivalen a 100 milisegundos), se llama a la función de intervalo tan cerca del valor de interval como sea posible. Debe utilizar la función updateAfterEvent() para asegurarse de que la pantalla se actualiza con suficiente frecuencia. Si el valor de interval es mayor que la velocidad de fotogramas del archivo SWF, sólo se llama a la función de intervalo cada vez que la cabeza lectora accede a un fotograma para minimizar el impacto cuando se actualiza la pantalla.

Espero que te sirva

suerte
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #7 (permalink)  
Antiguo 10/06/2005, 10:06
 
Fecha de Ingreso: febrero-2005
Mensajes: 135
Antigüedad: 12 años, 9 meses
Puntos: 0
CMC tienes toda la razón. Ya he resuelto el problema y precisamente la estructura de la pausa era la causa, ya que ese instrucción en un solo frame influía en la ejecución de toda la película, por lo cual los stop() no me los respetaba.

Llamo entonces la atención al foro de flash porque en uno de sus faqs se pregunta cómo hacer una pausa de x segundos en un frame, y es esa misma funcion la que he usado en este archivo. Bueno, uno tiene la culpa por no documentarse a fondo

La forma que considero más adecuada para hacer pausa es la siguiente:

Código:
function pausa(tiempo){
var tiempoinicio=getTimer()/1000;
var pausa=tiempo;
this.onEnterFrame=function(){
  	 if (Number(pausa)<=(getTimer()/1000)-tiempoinicio) { 
	 delete this.onEnterFrame
	 nextFrame()
}

}
}
pausa(5);//<-llamas a la funcion indicandole el tiempo de espera
  #8 (permalink)  
Antiguo 10/06/2005, 17:16
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 14 años, 10 meses
Puntos: 1
Ahora si
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:05.