Comunidad de diseño web y desarrollo en internet online

Cuenta Progresiva de 0 a 1000

Citar            
MensajeEscrito el 17 Abr 2012 11:43 am
Hola a todos,

A ver si alguien me puede echar una mano con un script que tengo que montar.

De primeras comentar que mi nivel de programación es muy baja (novato, pongo botones, imprimo textos en pantalla y algunas cosillas básicas con variables) por lo que pongo aquí lo que ando buscando para ver si alguien me puede guiar o aconsejar algún tutorial.

Tengo que montar un banner en Flash el cual muestre cuanta gasolina se ahorra al año.

Y los datos que tengo son, la gasolina ahorrada al año y la fecha en la que estamos.

Mi planteamiento para el flash es el siguiente

gasolina a fecha de 01/01/año es = 0
gasolina a fecha de 31/12/año es = 1000 (por poner un numero)

El funcionamiento del flash tendría que ser algo así.

Inicia película y mira la hora del sistema y según el resultado que le de mostrara una cifra teniendo en cuenta que a fecha de 1 de enero es 0 y que a 31 de diciembre es 1000

Luego ya entraríamos en un bucle para ir actualizando la cifra.

Saludos y gracias por adelantado ;)

Por doombdl

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 17 Abr 2012 03:12 pm
Que tal, a ver si consigo iluminarte un poco.

Código ActionScript :

//Primero creamos la primera fecha y la última
var fechaA:Date = new Date(2012, 0, 1);
var fechaB:Date = new Date(2012, 11, 31);

//Calculamos el total de tiempo desde 1970 que es la fecha universal del dato Date
var totalA:Number = fechaA.time;
var totalB:Number = fechaB.time;

//Calculamos el total de tiempo para ahorrar los 1000 de gasolina
var cienPorCien:Number = totalB-totalA;

//Ahora cogemos la fecha de hoy y calculamos el tiempo consumido del total
var fechaC:Date = new Date();
var porcentajeHoy:Number = fechaC.time - totalA;

//Ahora, con una regla de 3 averiguas el porcentaje de año a día de hoy
//Si cienPorCien es el 100% entonces porcentajeHoy = X
//Y   X = (pocentajeHoy*100)/cienPorCien
var porcentaje:Number = (porcentajeHoy*100)/cienPorCien;

//Y por último divides 1000/100, lo multiplicas por el porcentaje
//y te da los litros ahorrados desde principio de año
var litrosAhorrados:Number = porcentaje*10;

trace(litrosAhorrados);


Espero te sirva,
Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 17 Abr 2012 03:32 pm
Perdona, me acabo de dar cuenta de que este es el foro de AS2 y te lo he hecho en AS3 :oops: (Y es que esto de estar bailando de un foro a otro no es nada bueno), te dará un error en el compilador.
Escena=Escena 1, layer=Capa 1, frame=1, Línea 6 No hay ninguna propiedad que lleve por nombre 'time'.

Cambia estas 3 líneas

Código ActionScript :

var totalA:Number = fechaA.time;
var totalB:Number = fechaB.time;
var porcentajeHoy:Number = fechaC.time - totalA;

Por estas 3

Código ActionScript :

var totalA:Number = fechaA.getTime();
var totalB:Number = fechaB.getTime();
var porcentajeHoy:Number = fechaC.getTime() - totalA;


Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 18 Abr 2012 06:50 am
Oh! Muchas gracias Abducted

Por doombdl

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Abr 2012 09:11 am
De nada hombre, y si lo que quieres es hacer que la programación te valga por los siglos de los siglos entonces hazlo así:

Código ActionScript :

//Primero creamos la fehca de hoy
var fechaHoy:Date = new Date();

//Extraemos el año actual
var año:Number = fechaHoy.getFullYear();

//creamos una variable con el día 1 de enero del año en curso
//y otra con el 31 de diciembre
var primerDia:Date = new Date(año, 0, 1);
var ultimoDia:Date = new Date(año, 11, 31);

//y el resto lo dejamos igual,
//pero cambiando los nombres de las variables por los nuevos nombres
var totalA:Number = primerDia.getTime();
var totalB:Number = ultimoDia.getTime();
var cienPorCien:Number = totalB-totalA;
var porcentajeHoy:Number = fechaHoy.getTime() - totalA;
var porcentaje:Number = (porcentajeHoy*100)/cienPorCien;
var litrosAhorrados:Number = porcentaje*10;

trace(litrosAhorrados);

Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 18 Abr 2012 10:27 pm
Ahora tengo otra duda, me e personalizado un poco el codigo a mi manera y me encontre con otra duda.

El codigo actual es este

Código ActionScript :

var fechaA:Date = new Date(2012, 0, 1);
var fechaB:Date = new Date(2013, 0, 1);

var totalA:Number = fechaA.getTime();
var totalB:Number = fechaB.getTime();

// fecha actial
var fechaC:Date = new Date();
var totalC:Number = fechaC.getTime();

totalB -= totalA;
totalC -= totalA;


var numeroMaximo:Number  = 10000;
var litrosAhorrados:Number = totalC * numeroMaximo / totalB; 

// cuidado de no pasarnos
if( litrosAhorrados > numeroMaximo)
   litrosAhorrados = numeroMaximo;

// redondeamos a 2 decimales
litrosAhorrados = int(litrosAhorrados * 100) / 100;

ahorro_txt.text = litrosAhorrados;


E puesto que me muestre un máximo de 2 decimales y creado una variable para facilitarme la modificación de la cifra final, ademas de unas lineas por si se da el caso de que se supere la cifra fin(cuando supera la fecha limite)

Ahora la duda que tengo es... ¿como puedo formatear el texto para añadir el "." al 1.000?

Vamos que me muestre por ejemplo 10000000 - > 10.000.000

Saludos y gracias de nuevo

Por doombdl

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Abr 2012 09:19 am
Hola:

En realidad esto no te hace falta.

Código ActionScript :

// cuidado de no pasarnos
if( litrosAhorrados > numeroMaximo)
   litrosAhorrados = numeroMaximo

En el último código que te he pasado es imposible pasarse del máximo, supon que estamos a 31 de diciembre de 2012 a las 23:50 mirando el banner. El banner nos mostraría que en 2012 llevamos ahorrados casi los 1000 litros de gasolina. Si miráramos 15 minutos más tarde, es decir el día 1 de enero de 2013 a las 00:05, el banner nos diría que llevamos ahorrados 0 litros en 2013, pues la cuenta habría vuelto a empezar para 2013 y así cada año.

Para poner los puntos en el 1.000 ó en el 10.000 ó en el 100.000 sólo has de trabajar con cadenas.

Código ActionScript :

//Primero tenemos el número al que le queremos poner los puntos
var totalAhorrado:Number = 152320;
//Lo convertimos a cadena
var aCadena:String = ''+totalAhorrado;
//Hallamos los caracteres que tenga
var longitud:Number = aCadena.length;

//Ahora creamos un string vacío que vamos a ir rellenando
var conPuntos:String;

//Calculamos cuantos puntos necesitamos sin decimales
var cuantosPuntos:Number = int(longitud/3);
//Calculamos cuantos números hay al principio sin punto
var sinPunto:Number = longitud-(cuantosPuntos*3);
//Empezamos a rellenar
conPuntos = aCadena.substring(0, sinPunto);

//y con un bucle rellenamos el resto
for (var x:Number =0; x<cuantosPuntos; x++) {
   //Primero calculamos la posicion inicial
   var inicio:Number = sinPunto+(x*3)
   //Y rellenamos la cadena
   //Primero detectamos si hemos de añadir el primer punto o no,
   //Pues no queremos que por ejemplo "900" nos aparezca como ".900" ó que "123987" aparezca como ".123.987"
   if (x == 0) {
      if (longitud%3 != 0) {conPuntos += '.'}
   }
   else {conPuntos += '.'}
   
   //Y después del punto añadimos el resto de la cadena
   conPuntos += aCadena.substring(inicio, inicio+3)
}

trace(conPuntos);


Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 19 Abr 2012 10:53 am
Releyendo me he dado cuenta de que el condicional se puede mejorar

Código ActionScript :

if (x == 0 && longitud%3 != 0 || x > 0) {conPuntos += '.'}

Y es que últimamente estoy poco fino, muchas cosas en mi cabeza...

Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome

 

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