AS3_テキストのBitmap化と正規表現との比較?!


 
//テキストフィールドから一文字ずつテキストを抜き出して、配列に入れてビットマップ化!!
抜き出したテキストを任意の文字列か比較して、漢字だったら赤くするサンプル

 
 
ソースはこんなかんじです。
 

package 
{
	import flash.display.MovieClip;
	import flash.text.*;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import RegExp;
	import MozaicEffect;
	/**
	 * ...
	 * @author ...
	 */
	public class  Main extends MovieClip
	{
 
		private var _textList:Array = new Array();
		private var tf:TextField = new TextField();
		private var tf2:TextField;
		private var _mozaic:MozaicEffect = new MozaicEffect();
 
		public function Main():void
		{
 
			tf.text = "あいうえお漢字ぁぃぅぇぉアイウエオカAIUEOaiueo亜衣兎";
 
			var pattern:RegExp = /[-んぁア-ンア-ンa-zA-Z0-9!。!?、]/;
 
			for (var i:int = 0 ; i < tf.length ; i++)
			{
				_textList[i] = tf.text.charAt( i );
 
				tf2 = new TextField();
				tf2.text = _textList[i];
				trace(tf2);
				if (!pattern.test(tf2.text) )
				{
					tf2.textColor = 0xFF0000;
				}
				var bmd:BitmapData = new BitmapData(tf2.width,tf2.height);
				bmd.draw(tf2);
 
				var bmp:Bitmap = new Bitmap(bmd);
				addChild(bmp);
 
				bmp.x =10 + 15 * i;
				bmp.y = 200;
			}
		}		
	}
}


  
 
  
正規表現の扱い方は下記のサイトを参考にさせていただきました。
http://itpro.nikkeibp.co.jp/article/COLUMN/20080715/310916/?ST=webdesign&P=1
 

import RegExp;  
var pattern:RegExp = /[-んア-ンア-ンa-zA-Z0-9!。!?、]/; 
pattern.test(tf.text)



RegExpクラスをimportしたら
RegExpクラスの変数に文字列を入れてあげる
そしたらRegExpクラスのtest()に比べたい文字列の入った
変数やテキストフィールドを入れてあげる。

あとはif文とかでいろいろ比べて条件分岐とかさせてあげれば
けっこう使えそうです。

 



 
 
単純にテキストをBitmap化するなら
tf(テキストフィールド)をbmdのdraw()の引数にしてあげて
それをBitmapにしてあげるだけでできました

var bmd:BitmapData = new BitmapData(100,50);
bmd.draw(tf);
 
var bmp:Bitmap = new Bitmap(bmd);
addChild(bmp);

 
 
すこしずつBitmap関連の部分がわかるようになってきてうれしいです。
 

Leave a Reply