Comunidad de diseño web y desarrollo en internet online

Cronometro con la misma tecla

Citar            
MensajeEscrito el 12 May 2010 08:17 pm
Hola a todos, estoy creando un proyecto en mi universidad para medir el tiempo de caída libre de algún objeto. Para ello necesito un cronometro, el cual gracias a AXM pude conseguir, pero tengo un problema, el cronometro que el presenta se maneja por botones para su manejo, y necesito que se inicie y pare con cualquier tecla; debido a que no tengo muchos conocimientos en AS3 me gustaría que me pudieran ayudar para que el cronometro se inicie y pare con la misma tecla. Abajo dejo el post original y el código escrito por AXM. Muchas gracias.

Post Original: http://www.cristalab.com/tips/ejemplo-de-cronometro-al-estilo-24-en-actionscript-3-c46973l/

Código ActionScript :

package 
{
   import flash.display.*;
   import flash.events.*;
   import flash.text.TextField;
   import flash.text.TextFieldAutoSize;
   import flash.utils.Timer;
   import flash.utils.getTimer;

   public class Cronometro extends Sprite
   {
      private var milesimasXcentecima:uint=10;
      private var milesimasXsegundo:uint=1000;
      private var milesimasXminuto:uint=1000 * 60;// 60,000
      private var milesimasXhora:uint=1000 * 60 * 60;// 3,600,000

      private var hora:uint;
      private var minuto:uint;
      private var segundo:uint;
      private var centesima:uint;

      private var hora_txt:String;
      private var minuto_txt:String;
      private var segundo_txt:String;
      private var centesima_txt:String;

      private var milesimasTranscurridas:uint;
      private var copiaDe_GetTimer:uint;
      private var referenciaTemporal:uint;

      private var cronometroPausado:Boolean=false;
      private var cronometroAndando:Boolean=false;

      private var temporizador:Timer=new Timer(10,0);

      public function Cronometro()
      {
         led_txt.text="00 : 00 : 00 : 00";

         temporizador.addEventListener(TimerEvent.TIMER,tickTack);
         botonIniciar.addEventListener(MouseEvent.CLICK,iniciarCronometro);
         botonPausar.addEventListener(MouseEvent.CLICK,pausarCronometro);
         botonReiniciar.addEventListener(MouseEvent.CLICK,reiniciarCronometro);
         botonFotografia.addEventListener(MouseEvent.CLICK,fotoGrafiarCronometro);
      }
      private function tickTack(e:TimerEvent):void
      {
         milesimasTranscurridas=getTimer() - copiaDe_GetTimer;
         // Si por ejemplo el .SWF lleva abierto 10 segundos (10000 milesimas) y el cronometro se inicio en el segundo 4,
         // entonses nuestro cronometro lleva 6 segundos transcurridos. 10000 - 4000 = 6000 (6 Segundos)
         hora=Math.floor(milesimasTranscurridas / milesimasXhora);
         // Digamos que llevamos 14,687,987 milesimas trascuridas. 14,687,987 / 3,600,000 = 4.079... Redondeando 4 Horas 
         referenciaTemporal=milesimasTranscurridas - hora * milesimasXhora;
         // Ejem: Llevamos 14,687,987 mile = 4 horas algo. 14,687,987 mils - (4 * milesimasXhora = 14,400,000) = 287,987
         // Aca referenciaTemporal nunca va ser mayor que 3.599.999 milesimas. 

         minuto=Math.floor(referenciaTemporal / milesimasXminuto);
         // Ejem: referenciaTemporal es = 287,987 / milesimasXminuto (60,000) = 4.799.. Redondeando 4 Minutos
         // minuto nunca va ser mayor que 59

         referenciaTemporal=referenciaTemporal - minuto * milesimasXminuto;
         // Ejem: referenciaTemporal es 287,987 - (4 Minutos * 60,000 = 240.000 ) = 47,987
         // Aca referenciaTemporal nunca va ser mayor de 59.999

         segundo=Math.floor(referenciaTemporal / milesimasXsegundo);
         // Ejem: referenciaTemporales 47,987 / milesimasXsegundo que son 1000 es = a 47.987 Redondeando 47 segundos
         // segundo nunca va ser mayor que 59

         referenciaTemporal=referenciaTemporal - segundo * milesimasXsegundo;
         // Ejem: referenciaTemporal es 47,987 - (segundo 47 * milesimasXsegundo que son 1000 = 47,000) = 987 
         // Aca referenciaTemporal nunca va ser mayor que 999

         centesima=Math.floor(referenciaTemporal / milesimasXcentecima);
         // Ejem: ahora referenciaTemporal es 987 / milesimasXcentecima que son 10 es = a 98.7 redondeando 98 centecimas
         // centesima nunca va ser mayor que 99

         // Condicinales que hacen que todos los numeros tengan siempre dos digitos y no uno
         if (hora < 10) {
            hora_txt="0" + hora.toString();
         } else {
            hora_txt=hora.toString();
         }
         if (minuto < 10) {
            minuto_txt="0" + minuto.toString();
         } else {
            minuto_txt=minuto.toString();
         }
         if (segundo < 10) {
            segundo_txt="0" + segundo.toString();
         } else {
            segundo_txt=segundo.toString();
         }
         if (centesima < 10) {
            centesima_txt="0" + centesima.toString();
         } else {
            centesima_txt=centesima.toString();
         }
         // Pasanos todo al campo de texto
         led_txt.text=hora_txt + " : " + minuto_txt + " : " + segundo_txt + " : " + centesima_txt;
      }
      private function iniciarCronometro(e:MouseEvent):void
      {
         if (cronometroAndando == false && cronometroPausado == false) {
            copiaDe_GetTimer=getTimer();// Toma una foto, de las milesimas que han pasado desde el inicio.
         } else if (cronometroAndando == false && cronometroPausado == true) {
            copiaDe_GetTimer=getTimer() - milesimasTranscurridas;
         }
         temporizador.start();
         cronometroAndando=true;
      }
      private function pausarCronometro(e:MouseEvent):void
      {
         if (cronometroAndando == true) {
            cronometroAndando=false;
            cronometroPausado=true;
            temporizador.stop();
         }
      }
      private function reiniciarCronometro(e:MouseEvent):void
      {
         temporizador.stop();
         led_txt.text="00 : 00 : 00 : 00";
         milesimasTranscurridas=0;
         cronometroAndando=false;
         cronometroPausado=false;
      }
      private function fotoGrafiarCronometro(e:MouseEvent):void
      {
         temporizador.stop();
      }
   }
}

Por shuldinier

0 de clabLevel



 

chrome
Citar            
MensajeEscrito el 07 Oct 2010 07:41 am
Estimada comunidad si alguien pudiese responder la duda seria de gran ayuda, también tengo el mismo problema necesito que el cronometro inicie y pare con la misma tecla... la verdad he tratado de resolverlo pero no hay caso de que funcione

Por kvsol

4 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 07 Oct 2010 07:49 am
Solo tienen que buscar en Google para encontrar la respuesta, por eso nadie respondió la primera vez ni responderá ahora.

http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/events/KeyboardEvent.html#KEY_UP

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.