Text Scrambler

[Update: Updated the core class with functiosn to scramble text, get random characters from specific paramaters, also updated the example to show both Scramble and Unscramble in action, may post a live example]

Came accross this AS1 Tutorial, and decided to code my own class from scratch, came along nicely.

Scrambler.as: Download

Code:

package com.arcticcode.greenFlames.Text
{
	public class Scrambler
	{
		public static const ALPHABET:String = "abcdefghijklmnolpqrstuvwxyz";
		public static const NUMBERS:String = "0123456789";
		public static const SYMBOLS:String = "`¬!\"£$%^&*()_+=-[];'#./,{}~@:?><\|";
 
		public static function scramble(input:String):String
		{
			var str:String = "";
			for(var i:uint = 0;i<input.length;i++)
			{
				str += getRanChar(input.charAt(i));
			}
			return str;
		}
 
		public static function getRanChar(char:String):String
		{
			var ch:String = "";
			if(ALPHABET.indexOf(char) != -1)
			{
				ch = ALPHABET.charAt(Math.floor(Math.random()*ALPHABET.length));
				if(ch == char)
				{
					ch = getRanChar(char);
				}
			}
			else if(ALPHABET.indexOf(char.toLowerCase()) != -1)
			{
				ch = ALPHABET.charAt(Math.floor(Math.random()*ALPHABET.length)).toUpperCase();
				if(ch == char)
				{
					ch = getRanChar(char);
				}
			}
			else if(NUMBERS.indexOf(char) != -1)
			{
				ch = NUMBERS.charAt(Math.floor(Math.random()*NUMBERS.length));
				if(ch == char)
				{
					ch = getRanChar(char);
				}
			}
			else if(SYMBOLS.indexOf(char) != -1)
			{
				ch = SYMBOLS.charAt(Math.floor(Math.random()*SYMBOLS.length));
				if(ch == char)
				{
					ch = getRanChar(char);
				}
			}
			else if(char == " ")
			{
				ch = " ";
			}
			return ch;
		}
 
		public static function unscramble(input:String,target:String,letters:Boolean,numbers:Boolean,symbols:Boolean,mixedCase:Boolean,...extraChars):String
		{
			var chars:String = "";
 
			if(letters){chars += ALPHABET};
			if(mixedCase){chars += ALPHABET.toUpperCase();}
			if(numbers){chars += NUMBERS;}
			if(symbols){chars += SYMBOLS;}
			if(extraChars != null){chars += extraChars;}
 
			var str:String = input;
			var ts:String = "";
			var char:String = "";
 
			for(var i:uint=0;i<str.length;i++)
			{
				NUMBERS.indexOf(target.charAt(i)) != -1 ? char = NUMBERS.charAt(Math.floor(Math.random()*NUMBERS.length)) : char = chars.charAt(Math.floor(Math.random()*chars.length));
				str.charAt(i) != target.charAt(i) ? ts += char : ts += str.charAt(i);
			}
			return ts;
		}
	}
}

To Use:

package
{
	import com.arcticcode.greenFlames.Text.Scrambler;
	import com.arcticcode.greenFlames.utils.StringUtils;
 
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
	[SWF(width=600,height=400,backgroundColor=0xFFFFFF)]
	public class TextScramble extends Sprite
	{
		private var tf:TextField;
		private var targetString:String="My Text 2008";
		private var count:uint = targetString.length; 
		private var currString:String;
		private var arr:Array;
		private var char:String = "";
 
		public function TextScramble()
		{
			init();
		}
		private function init():void
		{
			tf = new TextField();
			tf.autoSize = TextFieldAutoSize.LEFT;
			tf.defaultTextFormat = new TextFormat("Verdana",12,0);
			addChild(tf);
			tf.selectable = false;
			tf.text = "            ";
 
			addEventListener(Event.ENTER_FRAME, loop);
		}
		private function loop(e:Event):void
		{
			tf.text = Scrambler.unscramble(tf.text, targetString, true, true, false, true, " ");
			tf.text == targetString ? removeEventListener(Event.ENTER_FRAME, loop) : null;
		}
	}
}
Vote in HexoSearch Vote for this on HexoSearch!

2 Responses to “Text Scrambler”


Leave a Reply