Hace poco elchininet nos mostró un prototype para escribir un texto en forma aleatoria en Actionscript 2. En este tip vamos a ver como hacer lo mismo, pero con Actionscript 3.
Vamos a crear una clase que extienda de TextField donde crearemos la función createRandomText(); esta función está compuesta a su vez por un Timer y dos funciones. La funcion q crea y ejecuta el Timer esta seteada por la longitud de la cadena de texto; la funcion que ejecuta el timer lo que hace es ir construyendo un texto temporal tomando caracteres desde un array hasta ir armando el texto correcto, para ello tenemos la función rand() que la que evalúa la longitud y los espacios entre las palabras.
Debo decir que la optimización y corrección de detalles de la clase fueron salvados una vez mas gracias la inmensa sabiduría del Maestro Z
Esto es lo que vamos a hacer:
Código :
package ph.display.text{ // import flash.text.TextField; import flash.utils.Timer; import flash.events.Event; import flash.events.TimerEvent; // public class TextHolder extends TextField { // private var field:TextField; private var txt:String; private var currrentString:String; private var chars:String; private var charsArray:Array; private var timer:Timer; private var txtLength:uint; private var counter:uint; private var speed:uint; private var incress:uint; private var ignoreW:Boolean; // //public function TextHolder():void {}; // como el costructor está vacio no es imprescindible // public function createRandomText(_txt:String, _speed:uint = 20, _incress:uint = 1, ignoreWhite:Boolean = false):void { // txt = _txt; speed = _speed; incress = _incress; ignoreW = ignoreWhite; // field = this; txtLength = txt.length; counter = 0; // var chars:String = "a b c d e f g h i j k l m n o p q r s t u v w x y z 1 2 3 4 5 6 7 8 9 0 ! @ # $ % ^ & * ( ) { } < > / ?"; charsArray = chars.split(" "); currrentString = new String(); // doTimer(); } // private function doTimer():void { // timer = new Timer(speed, txtLength); timer.addEventListener(TimerEvent.TIMER, incressment); timer.start(); } // private function incressment(e:Event = null):void { // currrentString += txt.substr(counter, incress); counter += incress; field.text = (currrentString + rand(txtLength - counter)); } // private function rand(t:uint):String { // var randomText:String = ""; // for (var i:int = 0; i < t; i++) { // if (!ignoreW && txt.charAt(counter + i) == " ") { randomText += " "; } else { randomText += charsArray[uint(Math.random() * charsArray.length)]; } } return randomText; } // }// class }// package
Y en la clase Main:
Código :
package { // import flash.display.MovieClip; import flash.text.TextFieldAutoSize; import ph.display.text.TextHolder; // public class Main extends MovieClip { // private var randTxt:TextHolder; private var txtString:String; // public function Main() { // buildText(); } // private function buildText():void { // txtString = "Lorem ipsum dolor sit amet."; // randTxt = new TextHolder(); randTxt.createRandomText(txtString); randTxt.autoSize = TextFieldAutoSize.LEFT; // addChild(randTxt); } // }// class }// package
Eso es todo, espero sirva
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por elchininet el 29 de Octubre de 2008
Por Freddie el 30 de Octubre de 2008
Por Zguillez el 30 de Octubre de 2008
Por The Fricky! el 31 de Octubre de 2008
Por ironeric23 el 01 de Noviembre de 2008
Por Arturo Lopez el 07 de Febrero de 2009
Por Prototipo el 26 de Agosto de 2009