In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

テキストをビットマップデータに変換する

テキストをビットマップデータに変換する。
余白を削るところがポイント。

参考

OZACC.blog - TextFieldの最小限の高さ
http://blog.ozacc.com/archives/001780.html
Get Adobe Flash player
by tkinjo 13 Jun 2009
    Embed
/**
 * Copyright tkinjo ( http://wonderfl.net/user/tkinjo )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/8qPw
 */

package {
	
	/**
	 * テキストをビットマップデータに変換する。
	 * 余白を削るところがポイント。
	 * 
	 * 参考
	 * 
	 * OZACC.blog - TextFieldの最小限の高さ
	 * http://blog.ozacc.com/archives/001780.html
	 */
	
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.geom.ColorTransform;
	
	[SWF(width = "465", height = "465", frameRate = "60", backgroundColor = "#cccccc")]
	public class Main extends Sprite {
		
		//
		private const TEXT:String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		
		//
		private var bitmap:Bitmap;
		
		//
		private var check:Boolean = true;
		
		
		
		import flash.display.BitmapData;
		import flash.geom.Matrix;
		import flash.text.TextField;
		import flash.text.TextFormat;
		
		/**
		 * テキストをビットマップデータに変換する関数
		 */
		//function textToBitmapData( text:String, textFormat:TextFormat = null ):BitmapData {
		private function textToBitmapData( text:String, textFormat:TextFormat = null ):BitmapData {
			
			// テキストフィールドの作成
			var textField:TextField = new TextField();
			textField.text = text;
			
			// テキストフォーマットの適用
			if( textFormat )
				textField.setTextFormat( textFormat );
			
			// テキストフィールドの幅、高さを調節。2 * 2 の意味は参考リンク参照。
			textField.width = textField.textWidth + 2 * 2;
			textField.height = textField.textHeight + 2 * 2;
			
			// ビットマップデータの作成
			//var bitmapData:BitmapData = new BitmapData( textField.width - 2 * 2, textField.height - 2 * 2, true, 0 );
			//*
			var bitmapData:BitmapData;
			if( !check )
				bitmapData = new BitmapData( textField.width - 2 * 2, textField.height - 2 * 2, true, 0 );
			else
				bitmapData = new BitmapData( textField.width - 2 * 2, textField.height - 2 * 2, true, 0xffffffff );
			//*/
			
			// テキストフィールドをビットマップデータ上に描画。
			bitmapData.draw( textField, new Matrix(1, 0, 0, 1, -2, -2) );
			
			return bitmapData;
		}
		
		/** --------------------------------------------------
		 * 以下その他の処理
		 */
		
		/**
		 * 
		 */
		public function Main() {
			
			bitmap = new Bitmap();
			addChild( bitmap );
			
			draw();
			
			stage.addEventListener( MouseEvent.CLICK, clickHandler );
		}
		
		/**
		 * 
		 * @param	event
		 */
		private function clickHandler( event:MouseEvent ):void {
			
			check = !check;
			draw();
		}
		
		/**
		 * 
		 */
		private function draw():void {
			
			var bitmapData:BitmapData = textToBitmapData( TEXT );
			bitmap.bitmapData = bitmapData;
		}
	}
}