アーカイブ

‘actionscript’ カテゴリーのアーカイブ

yugop.comのテキスト表示がかっこ良いのでまねしてみた

2008 年 9 月 11 日 admin コメントはありません

actionscriptが楽しい今日このごろ、yugoさんの所のテキスト表示がかっこよかったのでまねしてみました。

うん、悪くないです。
埋め込みフォントを使わないテキストエフェクトとして素晴らしいアイディアですよね。

public var char_codes:Object = new Object();
public var stack:Object = new Object();
public var indexs:Array = new Array();
public var before_text:String;
public var display_text:String;

public function change():void {
	var text:String = input_textinput.text;//mxmlのTextInputから
	var len:uint = text.length;

	before_text = '';
	for (var i:uint = 0; i < len; i++ ) {
		if (text.charCodeAt(i) === 32) {
			before_text += ' ';
		} else if (text.charCodeAt(i) === 12288) {
			before_text += ' ';
		} else {
			char_codes[i] = [
				text.charCodeAt(i),
				text.charCodeAt(i) + 1,
				text.charCodeAt(i) + 2,
				text.charCodeAt(i) + 3,
				text.charCodeAt(i) + 4,
				text.charCodeAt(i) + 5,
				text.charCodeAt(i) + 6,
				text.charCodeAt(i) + 7,
				text.charCodeAt(i) + 8,
				text.charCodeAt(i) + 9,
				text.charCodeAt(i) + 10
			];
			indexs.push(i);
			before_text += '_';
		}
	}

	addEventListener(Event.ENTER_FRAME, change_text);
}

public function change_text(event:Event = null):void {
	var indexs_len:uint = indexs.length;

	if (indexs_len) {
		var index:String = String(Math.ceil(indexs_len * Math.random()) - 1);
		stack[indexs[index]] = char_codes[indexs[index]];
		indexs.splice(index, 1);
	}

	display_text = '';
	var text_len:uint = before_text.length;
	for (var i:uint = 0; i < text_len; i++ ) {
		if (stack.hasOwnProperty(String(i))) {
			var codes:Array = stack[String(i)];
			var char:String = String.fromCharCode(codes.pop());
			display_text += char;

			if (stack[String(i)].length === 0) {
				delete stack[String(i)];
			}
		} else {
			display_text += before_text.charAt(i);
		}
	}
	if (before_text === display_text) {
		removeEventListener(Event.ENTER_FRAME, change_text);
	}
	before_text = display_text;
	display_textinput.text = display_text;//mxmlのTextInputへ
}

まだ効率のよい方法がありそうなので、改善点などありましたらご教授願えるとありがたいです。

カテゴリー: actionscript, flex タグ: