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

Cronometrar una variable

Estas en el tema de Cronometrar una variable en el foro de Flash y Actionscript en Foros del Web. Hola, ya he buscado esto y lamentablemente no he encontrado alguna solucion medianamente simple, y la verdad es que no quiero perder demasiado tiempo haciendo ...
  #1 (permalink)  
Antiguo 03/09/2008, 01:34
 
Fecha de Ingreso: noviembre-2006
Mensajes: 17
Antigüedad: 17 años, 5 meses
Puntos: 0
Cronometrar una variable

Hola, ya he buscado esto y lamentablemente no he encontrado alguna solucion medianamente simple, y la verdad es que no quiero perder demasiado tiempo haciendo esto.
Lo que necesito es generar 4 o 5 textos dinamicos que me muestren en tiempo real, el tiempo transcurrido en el que cierta variable (que yo conozco) tiene el valor asignado a cada texto.
Por ejemplo si hablaramos de animales, lo que necesito es que uno de los textos dinamicos me vaya contando todo el tiempo transcurrido total en el que la variable "animal" tuvo por valor "mono", y otro en el que cuente el tiempo transcurrido total en el que la variable tuvo por valor "jirafa" y asi.
Cabe aclarar que la variable va a volver a los valores reiteradas veces, es decir que va a cambiar muchas veces y puede repetirlos, y los textos deben mostrar el tiempo transcurrido total, es decir, la suma de todos los segundos en los que la variable tuvo por valor ese texto en particular.
Uf se me hizo largo, bueno disculpen si tienen que leer mucho, desde ya muchas gracias por las respuestas.
Un saludo!
  #2 (permalink)  
Antiguo 03/09/2008, 02:05
Avatar de SinguerInc  
Fecha de Ingreso: octubre-2007
Ubicación: Barcelona, España
Mensajes: 551
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Cronometrar una variable

Se puede y es very easy...
Bien hecho, lo debes hacer con una function get y set dentro de una Classe, pero para no complicarte la vida te he hecho un script que puedes meter directamente en un frame: (copia esto en un archivo de flash nuevo en el primer frame y mira el output)

Código HTML:
var _nombreAnimal:String = "";
var _time:Date;

function setNombreAnimal(value:String):Void
{
	if(_time == undefined)
	{
		_time = new Date();	
	}
	trace(_time);
	var _now:Date = new Date();
	var s:String = "La variable _nombreAnimal fue " + _nombreAnimal + " durante " + ((_now.getTime() - _time.getTime())/1000) + " segundos!"; //_txt se supone que es un textfield
	_nombreAnimal = value;
	trace(s);
	_time = new Date();	
}

function getNombreAnimal():String
{
	return _nombreAnimal;
}

var posiblesNombres:Array = ["perro", "gato", "elefante", "jirafa", "mono"];

function cambiarNomberAnimal():Void
{
	var nombre:String = posiblesNombres[Math.floor(Math.random()*posiblesNombres.length)];
	setNombreAnimal(nombre);
	setTimeout(cambiarNomberAnimal, Math.floor(Math.random() * 5000));
}

cambiarNomberAnimal();
Estoy haciendo un blog sobre ActionScript 3, quieres hecharle un vistazo, deja algun comentario! SinguerInc Blog
__________________
/blog.singuerinc.com
  #3 (permalink)  
Antiguo 05/09/2008, 23:38
 
Fecha de Ingreso: noviembre-2006
Mensajes: 17
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Cronometrar una variable

guau, la verdad es que me has dejado muy impresionado, me cuesta un poco entender el codigo puesto que hay funciones que no termino de entender, aunque ya no es tu funcion ponerte a explicarme lo que hiciste, ya muchisimo hiciste pasando el codigo y de una manera tan facil.

sabre aprovecharlo de la mejor manera, eso si, pero si pudieras comentarme al menos que es ese ":Void" al final de la funcion o que hiciste al setear "_nombreAnimal = value;", o la funcion cambiarNombreAnimal() que no la termine de entender como es que logra integrar todas las otras en solo tres pasos, te lo agradeceria muchisimo

con respecto al blog te comento que entre, pero no he incurrido todavia en AS3 por lo que me quede un poco mareado con los textos, aunque lo he dejado en mis favoritos para consultar, me gusta que este bien concentrado en un tema particular
  #4 (permalink)  
Antiguo 06/09/2008, 06:32
Avatar de SinguerInc  
Fecha de Ingreso: octubre-2007
Ubicación: Barcelona, España
Mensajes: 551
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Cronometrar una variable

hola, te cuento, AS3 es muy estricto en cuanto a syntax, y te acostumbras a escribir el código de forma estructurada, declarando las variables con su tipo y las funciones con el valor que devuelven.
Void en AS2 al final de el nombre de una función():Void quiere decir que la funcion no te devuelve nada, o sea, que dentro de ella se realiza una operación pero no genera ningun resultado. En la siguiente función en cambio realizo una suma y devuelvo un numero, entonces quedaría asi:

Código HTML:
function sumar(val1:Number, val2:Number):Number
{
return val1 + val2;
}
en cuanto a la función "cambiarNombreAnimal()"

Código HTML:
function cambiarNomberAnimal():Void
{
	var nombre:String = posiblesNombres[Math.floor(Math.random()*posiblesNombres.length)];
	setNombreAnimal(nombre);
	setTimeout(cambiarNomberAnimal, Math.floor(Math.random() * 5000));
}
te explico linea por linea:

1) var nombre:String = posiblesNombres[Math.floor(Math.random()*posiblesNombres.length)];

Lo que estoy haciendo es recuperar un valor a random dentro del array que contiene los nombres, o sea, cuando escribes Math.random() te devuelve un valor entre 0 y 1, despues lo multiplico por la cantidad de nombres que tenemos en nuestro array, que son 5, entones si Math.random() es igual a 0.5 el resultado de Math.random() * 5 será igual a 2.5, despues todo eso le aplicamos Math.floor(2.5) que redondea el numero, al final nos da "2", entonces quedaria -> posiblesNombres[2], que es igual a "elefante", porque las posiciones en los arrays comienzan desde 0 y no 1.

2) setNombreAnimal(nombre);

bueno, ahi lo que hago es llamar la función y pasarle el valor seleccionado, o sea "elefante"

3) setTimeout(cambiarNomberAnimal, Math.floor(Math.random() * 5000));

Para simular el cambio de variable lo que hago es llamar la misma funcion pero "dentro de X cantidad de tiempo", lo mismo, Math.random() * 5000 nos devuelve un numero entre 0 y 5000, en este caso serán milisegundos.

Saludos.
__________________
/blog.singuerinc.com
  #5 (permalink)  
Antiguo 06/09/2008, 22:44
 
Fecha de Ingreso: noviembre-2006
Mensajes: 17
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: Cronometrar una variable

una preguntas, la funcion getNombreAnimal():String ¿esta cumpliendo algun papel en el script?

¿que quiere decir _nombreAnimal = value; ?

estuve viendo la ayuda de flash, e indica que setTimeout es una funcion que despues de ejecutarse se elimina, y entonces no entendi muy bien como es que el output me sigue mostrando los resultados, es mas, lei en esa ayuda que la funcion que SI se continua ejecutando es setInterval, pero la probe y lo unico que logro fue hacer entrar a flash en un error ciclico y se tildo. no me quedo muy claro eso tampoco.
  #6 (permalink)  
Antiguo 07/09/2008, 06:00
Avatar de SinguerInc  
Fecha de Ingreso: octubre-2007
Ubicación: Barcelona, España
Mensajes: 551
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Cronometrar una variable

mmm, en un principio como te contaba, bien hecho deberías hacer una Classe con su metodo set y get para la variable "nombreAnimal", pero es complicado en este punto.
Por ahora getNomberAnimal() no tiene ningun sentido. La puedes borrar.
__________________
/blog.singuerinc.com
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 00:49.