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

Minutos y segundos

Estas en el tema de Minutos y segundos en el foro de Flash y Actionscript en Foros del Web. Hola. Estoy haciendo una película para reproducir sonido y quiero poner los minutos y segundos que lleva transcurrido la reproducción y los que en total ...
  #1 (permalink)  
Antiguo 20/12/2004, 17:27
Avatar de Mauri1  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago de Chile
Mensajes: 558
Antigüedad: 22 años
Puntos: 0
Minutos y segundos

Hola.
Estoy haciendo una película para reproducir sonido y quiero poner los minutos y segundos que lleva transcurrido la reproducción y los que en total son. Cuando la canción dura menos de 1 minuto está todo bien, porque:

progreso = Math.round(sonido.position/1000)
duracion = Math.round(sonido.duration/1000)

Pero cuando la canción dura más de 1 minuto, ahí está el problema: No sé cómo establecer para que cuando los segundos llegen a 60 los minutos se incrementen en 1 y obviamnete el 60 en los segundos no se muestre, si no que cambie a 00 y se produsca todo el ciclo nuevamente.
  #2 (permalink)  
Antiguo 20/12/2004, 17:41
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 22 años, 10 meses
Puntos: 3
Saludos...

Envía el código más específico para hacernos una idea y poder ayudarte.
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #3 (permalink)  
Antiguo 20/12/2004, 18:17
Avatar de bernethe  
Fecha de Ingreso: abril-2004
Ubicación: San José, Costa Rica
Mensajes: 384
Antigüedad: 20 años, 7 meses
Puntos: 2
si, creo que eso se soluciona con un IF pero le hace falta ver más codigo
__________________
..::BERNETHE::..
  #4 (permalink)  
Antiguo 21/12/2004, 18:44
Avatar de Mauri1  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago de Chile
Mensajes: 558
Antigüedad: 22 años
Puntos: 0
Lo que pasa es que no tengo más código, lo que quiero hacer es lo siguiente:

Antes de reproducir el sonido el contador está en 00:00, verdad. Cuando hago play y reprodusco ese sonido el contador avanza, por ejemplo 00:48. Pero lo que me pasa es que llega un momento en que el contador marca 00:75, no es lógico verdad. Entonces lo que quiero es que cuando el marcador llegue a 00:59 ocurra esto 01:00, es decir, que me vaya marcando los segundos y minutos que lleva un sonido reroduciéndose.

Por cierto goc00 muchas gracias por el fla de fade volumen
  #5 (permalink)  
Antiguo 21/12/2004, 21:47
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 22 años, 10 meses
Puntos: 3
Saludos...

Ahhh... ok, por ende estás utlizando dos variables, una para los segundos y minutos. Lo que quieres no es algo dificil. Deberías hacer algo como:

Código:
_root.onEnterFrame = function() {
   if(segundos==60) { //si los segundos llegan a 60
      minutos++; //incrementas en uno los minutos
      segundos=0; //y dejas los segundos nuevamente en 0
   }
};
Eso deberías adecuarlo a lo que necesites (yo lo dejé pensando que las acciones las colocas en el frame)
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #6 (permalink)  
Antiguo 22/12/2004, 19:41
Avatar de Mauri1  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago de Chile
Mensajes: 558
Antigüedad: 22 años
Puntos: 0
ok... Gracias goc00, me has salvado de muchas ya, muchas gracias
  #7 (permalink)  
Antiguo 23/12/2004, 18:10
Avatar de Mauri1  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago de Chile
Mensajes: 558
Antigüedad: 22 años
Puntos: 0
Hola goc00
Probe el codigo que me diste y este es el resultado http://codecool.webcindario.com/Minutos y segundos.html. Le puse 5 en vez de 60 para no esperar tanto y hacer las pruebas mejor

Aqui esta el AC

sonido = new Sound();
sonido.attachSound("01_2");
sonido.start();
minutos = "00";
_root.onEnterFrame = function() {
segundos = Math.round(sonido.position/1000);
if (segundos == 5) {
//si los segundos llegan a 5
minutos++;
//incrementas en uno los minutos
segundos = 0;
//y dejas los segundos nuevamente en 0
}
};

Pero si te das cuenta en la animacion, cuando los segundos llegan a 5 los minutos comienzan a aumentar progresivamente y luego los segundos siguen hacia arriba (6, 7, 8...), aunque en ese intervalo estaban en 0, pero luego no comienzan nuevamente del 1, si no que siguen como si nada.

Quizas sea porque la variable segundos esta dentro de _root.onEnterFrame, pero si no es así estos no avanzan y se quedan siempre en el 0.

Alguna sugerencia ????

Gracias

Última edición por Mauri1; 23/12/2004 a las 18:14
  #8 (permalink)  
Antiguo 23/12/2004, 21:25
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 22 años, 10 meses
Puntos: 3
Saludos...

Lo que sucede es algo obvio, esto porque la variable segundos cambia según el tiempo transcurrido. Me explico: la variable segundos si queda en 0, pero cuando vuelve a analizar la condición el tiempo sigue transcurriendo entonces asigna el nuevo valor que correspondería a 6 y como ya no se cumple más la condición minutos no variará. Por otra parte la variable minutos se incrementa porque como tu bien dices está dentro del onEnterFrame. Deja craniar y revisar bien el código haber si llego a una solución. De tenerla la pongo de inmediato.
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #9 (permalink)  
Antiguo 24/12/2004, 00:50
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 22 años, 10 meses
Puntos: 3
Saludos...

Uffff... después de estar al menos 3 horas pensando y pensando creo haber llegado a una solución. Deberás tener 3 Dynamic Text, con nombre de variable "minutos", "segundos" y "estado" (este último para que se vea más lindo, :D )

Ahora en el fotograma tendrás que poner:
Código:
stop();
minutos = 0;
segundos = 0;
sonido = new Sound();
sonido.attachSound("sonido_importado");
total = Math.round(sonido.duration/1000);
sonido.start();
function aumentar() {
	_root.segundos += 1;
	if (_root.segundos == 60) {
		_root.minutos++;
		_root.segundos = 0;
	}
}
objeto = new Object();
objeto.intervalo = function() {
	trascurrido = Math.round(sonido.position/1000);
	if (trascurrido<total) {
		aumentar();
		estado = "Tema reproduciéndose";
	} else {
		estado = "Ha finalizado el tema";
	}
};
setInterval(objeto, "intervalo", 1000);
P.D.: Me fijé que hay una leve desincronización. Tal vez se solucione con un preload del sonido. Realmente ahora estoy muy cansado como para buscar el posible fallo, te dejo o mejor dicho les dejo el código para que puedan chequear u optimizar el código (aquí hace falta maltos )
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...

Última edición por goc00; 24/12/2004 a las 01:08
  #10 (permalink)  
Antiguo 26/12/2004, 05:15
Avatar de Mauri1  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago de Chile
Mensajes: 558
Antigüedad: 22 años
Puntos: 0
Muchas gracia goc00, no se como pagarte tantas ayudas que me has dado. Pruebo el codigo y te cuento
  #11 (permalink)  
Antiguo 26/12/2004, 08:06
Avatar de Mauri1  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago de Chile
Mensajes: 558
Antigüedad: 22 años
Puntos: 0
Excelente !!!!!!!!
goc00 el codigo funciona de maravilla, es realmente lo que queria

Muchas gracias
  #12 (permalink)  
Antiguo 26/12/2004, 08:12
Avatar de Mauri1  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago de Chile
Mensajes: 558
Antigüedad: 22 años
Puntos: 0
Disculpa goc00, pero estuve intentando algo con el codigo y no lo logro hacer. Podrias echarme una manito, se trata de lo siguiente:

Si la cantidad de segundos es menor que 10, entonces que segundos sea igual a 0+segundos, es decir, que cuando los segundos sean 1, 2, 3... aparezca en pantalla 01, 02, 03... y lo mismo para los minutos

Muchas gracias goc00

Última edición por Mauri1; 30/12/2004 a las 17:54
  #13 (permalink)  
Antiguo 26/12/2004, 09:07
Avatar de ORendon  
Fecha de Ingreso: diciembre-2004
Ubicación: Med-Colombia
Mensajes: 46
Antigüedad: 19 años, 11 meses
Puntos: 0
De acuerdo seg<10

Hola Mauri1, en tu mismo post esta la respuesta
Cita:
Iniciado por Mauri1
Si la cantidad de segundos es menor que 10, entonces que segundos sea igual a 0+segundos, es decir, que cuando los segundos sean 1, 2, 3... aparezca en pantalla 01, 02, 03... y lo mismo para los minutos
Solo te faltó pasarlo al codigo, algo asi:
Código:
if (segundos<10){
  segundos="0"+segundos;
}
Espero q te sirva

Caho
  #14 (permalink)  
Antiguo 26/12/2004, 13:34
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 22 años, 10 meses
Puntos: 3
Saludos...

Exactamente como dice ORendon, tan solo debes concatenar un 0.

P.D.: Soy de Chile, Santiago
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #15 (permalink)  
Antiguo 29/12/2004, 17:41
Avatar de Mauri1  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago de Chile
Mensajes: 558
Antigüedad: 22 años
Puntos: 0
Eso ya lo intente y lo pongo dentro de la función:

function aumentar() {
_root.segundos += 1;
if (_root.segundos == 60) {
_root.minutos++;
_root.segundos = 0;
}
}

Ahi pongo lo que dice ORendon, pero en vez de mostrar 01, 02, 03... la cosa se vuelve loca y comienza a mostrarme 0000000001 por cada segundo que pasa y la cuestion es que esta agregandome un cero cada segundo y el 1 no sube a 2 a 3...
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 17:18.