|  
            
             b)Mostrar los el tiempo restante de carga y la tasa de transferencia 
             Para este ejemplo se requiere paciencia para tratar de entender 
              como funciona mi cerebro ya que está hecho a base de maña/lógica, 
              talvez la forma no sea la correcta o habrán programadores 
              que lo hagan distinto pero lo más importante es que este 
              también funciona. 
            Como no me alcanzaba nuestro campo de texto "output" 
              par desplegar " tiempo restante aproximadamente: tantos minutos:segundos 
              a tanta tasa por segundos" lo que hice fué poner texto 
              entre output y la barra con la leyenda " tiempo restante aproximado:" 
              para así sólo ponerle a output el tiempo y la tasa 
              de transferencia. 
            Lógica: 
              Voy a a revisar constantemente cuantos bytes se han cargado para 
              así tener la tasa de transferencia por segundos, es decir 
              voy a usar getTimer y lo asigno a una variable, veo cuandos bytes 
              se han cargado y los divido entre el tiempo que llevamos( esta es 
              la tasa de transferencia), una vez que tengo la tasa de transferencia 
              tengo que saber cuanto tiempo me queda para eso le resto al total 
              de bytes los que llevo y se los divido por la tasa de transferencia 
              que tengo en ese momento, eso me dará los segundos; pero 
              si son más de 60 segundos? entonces a los segundos que tengo 
              tengo que dividirlos entre 60 para ver cuantos minutos; pero si 
              son más de 60 minutos? le hacemos lo mismo a los minutos, 
              el resto son segundos, sin tomar en cuenta que ocupamos el porcentaje 
              pero eso es para la barra y a estas alturas ya deber ser del conocimiento 
              público como lo hacemos. 
            Si hasta aquí ya tienes el estómago revuelto tómate 
              un descanso, yo te espero; o si crees que es difícil entenderlo 
              piensa que explicarlo lo es aún más porque de hecho 
              lo es. 
            Bueno a lo que vinimos: 
            El total de bytes de la movie principal  
            onClipEvent (load) { 
                b_total=_root.getBytesTotal(); 
              } 
             
            Ahora en el evento enterFrame es donde ocurre todo lo interesante, 
              primero cuantos bytes hemos cargado , si la movie está cargada 
              le hago play en la etiqueta inicio. 
            onClipEvent (enterFrame){ 
                b_loaded=_root.getBytesLoaded(); 
                if(b_loaded >= b_total){ 
                  _root.gotoAndPlay("inicio"); 
                } 
             
            Si no se ha cargado sacamos el porcentaje para la barra y se le 
              aplicamos la escala x para salir de ella de una vez 
            porcentaje=(b_loaded/b_total)*100; 
              barra._xscale= porcentaje; 
            ahora, primero que todo necesitamos saber cuanto tiempo ha pasado, 
              para eso usamos getTimer, pero como getTimer devuelve milisegundos, 
              al monto de getTimer lo dividimos entre 1000 
            time=getTimer()/1000; 
            Sacamos la tasa de transferencia restando los bytes que tenemos 
              entre el tiempo que llevamos, vamos redondeando para no tener problemas 
              después 
            bps=Math.round(b_loaded/time); 
            Para saber cuantos bytes nos faltan, restamos el total de bytes 
              a los que tenemos hasta ahora. 
            bytes_left= b_total-new_bytes; 
            Los segundos que nos faltan sería los bytes que no faltan 
              entre la tasa de transferencia. Aquí redondeamos hacia arriba 
              para que justo después de ver que falta 1 segundo la movie 
              empieza; de lo contrario si se ve que faltan cero segundos porqué 
              no empieza la movie? 
            seg_left= Math.ceil(bytes_left/bps); 
            Ok, y eso cuántos minutos son?, pues lo dividimos entre 
              60; redondeado hacia abajo ya que si tenemos 45 segundos, todos 
              sabemos que no es un minuto pero 45/60 redondeado es 1, y no nos 
              sirve. 
            min_left= Math.floor(seg_left/60); 
            Tenemos los minutos, pero que pasa si es más de una hora 
              lo que tenemos que esperar? ( yo no esperaría tanto ); el 
              fin es que sacamos las horas diviendo minutos entre 60, redondeado 
              para abajo también 
            hrs_left=Math.floor(min_left/60); 
            Entonces las horas las sacamos de los minutos tenemos que saber 
              cuántos minutos nos quedan. Pues bien sólo se los 
              restas 
            min_left-=(hrs_left*60); 
            Osea entoces que ahora tengo que restarle las horas y los minutos 
              a los segundos que teníamos al principio, horas por 60 nos 
              quedan minutos, esto mas los minutos y esto otro por 60, tenemos 
              los segundos que quedan. 
            seg_left-=((hrs_left * 60) + min_left) * 60;; 
            Si las horas son cero o menores que diez cómo hago para 
              que se vea así 00, pues revisamos si el largo de hora, minutos, 
              o segundos el 1 ( esto es menor que 10 ), si es así que le 
              arrime un cero, sino que lo deje igual. 
            (length(hrs_left) == 1)?(hrs_left="0"+hrs_left):0; 
            minutos 
            (length(min_left) == 1)?(min_left="0"+min_left):0; 
            lo mismo va para los segundos. 
            (length(seg_left) == 1)?(seg_left="0"+seg_left):0; 
            Calculamos los kbps en una variable temporal ( por ahora ), dividiendo 
              los bps entre 1024 
            kbps_temp= bps/1024; 
             
            Ahora formateamos los kbps para que nos muestren un decimal. 
            kbps= Math.floor(kbps_temp*10)/10;  
            al multiplicar por lo diez rendondeando y luego diviendo entre 
              diez, obtendremos lo que buscamos 
              ejemplo: 
             tengo 25452 bytes, entre 1024 
              me da 24.855 (kbps_temp) 
              lo multiplico por diez me quedan. 
              248.55,  
              redondeado 
              248 
              ahora entre diez 
              24.8  
             
            Queremos que el textfied output nos muestre esto: 
            cant_horas : 
              cant_minutos : cant_segundos seg. 
              a cant_kpbs.cant_bps kbps 
            osea a los montos les tenemos que meter el ":"de los 
              minutos el ":" de los segundos, luego el "seg. a" 
              y el "kbps" para que se vea, por ejemplo:  
            "00:01:23 seg. a 5.2kbps";  
            esto lo hacemos así. 
            output= hrs_left+":" + min_left +":"+seg_left+"seg. 
              a "+ kbps + "kbps"; 
            Todo junto: 
            onClipEvent (load) {  
                b_total=_root.getBytesTotal();  
              }  
              onClipEvent (enterFrame){ 
                b_loaded=_root.getBytesLoaded();  
                if(b_loaded >= b_total){ 
                  _root.gotoAndPlay("inicio");  
                }else{ 
                  porcentaje=(b_loaded/b_total)*100;  
                  barra._xscale=porcentaje;  
                  time=getTimer()/1000;  
                  bps=Math.round(b_loaded/time); 
                  bytes_left= b_total-b_loaded; 
                  seg_left= Math.ceil(bytes_left/bps); 
                  min_left= Math.floor(seg_left/60); 
                  hrs_left=Math.floor(min_left/60); 
                  min_left-=(hrs_left*60); 
                  seg_left-=((hrs_left * 60) + min_left) * 
              60; 
                  (length(hrs_left) == 1)?(hrs_left="0"+hrs_left):0; 
                  (length(min_left) == 1)?(min_left="0"+min_left):0; 
               
                  (length(seg_left) == 1)?(seg_left="0"+seg_left):0; 
                  kbps= (Math.floor((bps/1024)*10))/10; 
                 output= hrs_left+":" + min_left +":"+seg_left+"seg. 
              a "+ kbps +"kbps"; 
                } 
              }  
            ver 
              ejemplo 
            espero te sea de ayuda :) 
            bugs via email 
             |