[AS 3.0] 텍스트를 한글자씩 보여주기 – RandomText
위의 예처럼 원하는 텍스트를 한글자씩 랜덤하게 보여주는 방법이다.
작업에 필요해서 구글링으로 찾은 소스, 살짝 수정.
// 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();
}
}
}
