[AS 3.0] 텍스트를 한글자씩 보여주기 – RandomText


위의 예처럼 원하는 텍스트를 한글자씩 랜덤하게 보여주는 방법이다.
작업에 필요해서 구글링으로 찾은 소스, 살짝 수정.

참고 : AS3.0 ランダムにテキストを表示させてみる

// RandomText.as
package {
	import flash.display.MovieClip;
	import flash.events.TimerEvent;
	import flash.utils.Timer;
	import flash.display.StageScaleMode;
	import flash.display.StageAlign;
	import flash.events.Event;
	import flash.text.TextField;

	public class RandomText {

		private var txtNum:int;
		private var tf:TextField;
		private var txt:String; //인수의 문자열을 담을 변수
		private var rightTxt:String;//1글자씩 표시하는 변수
		private var fakeTxt:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890!@%&$#_?!/-";
		private var timer:Timer;
		private var viewTrace:Boolean;

		public function RandomText(_tf:TextField, _txt:String, _time:uint = 50, _viewTrace:Boolean = false):void {
			tf = _tf;
			txt = _txt;
			timer = new Timer(_time);
			viewTrace = _viewTrace;
		}

//////////////////////////////////////////////////////////////////시작
		public function start():void {
			txtNum = 0;
			rightTxt = ""; //1글자씩 대입되는 변수
			tf.addEventListener(Event.ENTER_FRAME, rollWord); //랜덤하게 표시
			timer.addEventListener(TimerEvent.TIMER, endTimer);
			timer.start();
		}

//////////////////////////////////////////////////////////////////랜덤하게 글자를 표시
		private function rollWord(e:Event):void {
			tf.text = rightTxt;
			//랜덤하게 글자를 표시하는 글자수
			var randomTextNum:int = txt.length - rightTxt.length;
			for (var i:int = 0; i < randomTextNum; i++) {
				var randNum:Number = Math.floor(Math.random()*fakeTxt.length);
				tf.appendText(fakeTxt.charAt(randNum));
			}
		}

//////////////////////////////////////////////////////////////////타이머
		private function endTimer(e:Event):void {
			if (txtNum != txt.length - 1) {
				rightTxt += txt.charAt(txtNum);
				txtNum += 1;
				if (viewTrace) {
					trace(txtNum);
				}
			}
			else { //타이머종료
				tf.text = txt;
				tf.removeEventListener(Event.ENTER_FRAME, rollWord);
				timer.stop();
			}
		}

//////////////////////////////////////////////////////////////////
	}
}
// Main.as
package {

	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.text.TextFieldAutoSize;

	public class Main extends Sprite{
		public function Main():void {
			var _tf:TextField = new TextField();
			_tf.defaultTextFormat = new TextFormat("Verdana", 12, 0x000000);
			_tf.background = true;
			_tf.backgroundColor = 0xE0E0E0;
			_tf.autoSize = TextFieldAutoSize.LEFT;
			_tf.selectable = false;
			_tf.text = "";
			_tf.x = 10;
			_tf.y = 10;
			addChild(_tf);

			var rt:RandomText = new RandomText(_tf, "ActionScript Thread Library 1.0 (そうめん) ドキュメント", 25);
			rt.start();
		}
	}
}
Share

0 Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
(c) 2012 blog.flasia.com | powered by WordPress with Barecity