Alguna vez me encontrado con la circunstancia de mostrar algún texto con el típico efecto de desplazamiento horizontal y como no quería nada complicado el resultado fue este, una marquesina sencillita para un posible reproductor o mostrar noticias en alguna web, el resultado no es muy suave pero cumple con su propósito.
This movie requires Flash Player 9
[download id=»21″ format=»2″]
.
Código comentado
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
/*Indica que se eliminara un carácter cada 2 ciclos de enterframe para que el movimiento sea un poco mas suave.*/ var speed:int=2; var i:int=0; var n:int=0; /*A mayor numero menor el espacio entre la cola del texto y la cabeza del siguiente texto.*/ var capicua:int=25; /*Pasamos el texto a la cadena "miCadena" y intercalamos un espacio en blanco esto es necesario para que el texto no aparezca directamente si no k aparezca por la derecha. También con unas pequeñas modificaciones podríamos cargar los datos desde ficheros de texto, arrais, xml o desde un servidor. */ var espacio:String=" "; var miCadena:String=espacio+"^.}(._.)~ Bienvenidos a XAVIROBOT.COM, d(-_-)b <º(((>< (^,)~~ \(^o^)/ (+[__]•:•) ._. -_- ¯_¯ °_° ¥_¥ ¤_¤ :Þ "; /*Inicializamos la variable "memoria" con el valor/texto de "miCadena" esto nos servirá para recuperar el texto original cada vez de ser borrado.*/ var memoria:String=miCadena; /*Extraemos la longitud de la cadena este valor nos servirá para saber de cuantos caracteres dispone la cadena y poderlos borrar de uno en uno más adelante.*/ var maxCarac:int=miCadena.length-1; //Insertamos el evento OnEnterFrame que ejecutara el código indefinidamente this.addEventListener(Event.ENTER_FRAME, alEntrarFrame); function alEntrarFrame(e:Event):void { //Insertamos la variable "n" que se incrementara en +1 por cada ciclo n++; //Si n es multiplo del valor de speed entonces.. if (n%speed==0) { //incrementamos i por cada 2 ciclos de enterframe i++; /*Eliminamos el primer carácter de la cadena cada 2 ciclos, al eliminar el primer carácter del texto cada x tiempo conseguimos el efecto de desplazamiento.*/ txtOut.text=miCadena.substr(i,maxCarac); /*Si i es mayor o igual que el total de caracteres de la cadena menos el valor de capicúa entonces quiere decir que todos los caracteres de la cadena "miCadena" han sido borrados por lo tanto restablecemos las variables "n" e "i" a 0 y volvemos a pasar el valor de "memoria" a la cadena "miCadena" para volver a mostrar el texto completo.*/ if (i>=maxCarac-capicua) { //Reseteamos i i=0; //Reseteamos n n=0; /*Modificamos miCadena concatenado el total de caracteres especificados en capicua del principio de la cadena con el final de la cadena para conseguir que antes de que desaparezca el final de la cadena aparezca de nuevo el principio.*/ miCadena=txtOut.text+memoria.substr(capicua,memoria.length-1); // Volvemos a recuperar el total de caracteres de la cadena después de la concatenación maxCarac=miCadena.length-1; } } } |
Mismo código sin comentarios
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
var speed:int=2; var i:int=0; var n:int=0; var capicua:int=25; var espacio:String=" "; var miCadena:String=espacio+"^.}(._.)~ Bienvenidos a XAVIROBOT.COM, d(-_-)b <º(((>< (^,)~~ \(^o^)/ (+[__]•:•) ._. -_- ¯_¯ °_° ¥_¥ ¤_¤ :Þ "; var memoria:String=miCadena; var maxCarac:int=miCadena.length-1; this.addEventListener(Event.ENTER_FRAME, alEntrarFrame); function alEntrarFrame(e:Event):void { n++; if (n%speed==0) { i++; txtOut.text=miCadena.substr(i,maxCarac); if (i>=maxCarac-capicua) { i=n=0; miCadena=txtOut.text+memoria.substr(capicua,memoria.length-1); maxCarac=miCadena.length-1; } } } |