Flashでバウンディングボックスを表示して自由変形を実現してみる と サーバーにあるWebフォントで文字を画像変換してみる との組み合わせです。
Flashから文字変換用PHPを読み込む
Flashから文字変換用PHPを呼び出して、送信された文字を画像変換しています。
文字変換用のパラメータをURLのクエリーに追加するだけなので、通常の画像を読み込む手順で呼び出せます。
private var input:TextField; private var tool:TransformTool; private var submit_btn:Sprite;
private function init(e:Event = null):void { // TransformTool生成 tool = new TransformTool(new ControlSetStandard()); tool.autoRaise = true; addChild(tool); // イベントリスナー登録 submit_btn.addEventListener(MouseEvent.CLICK, submit); input.addEventListener(KeyboardEvent.KEY_DOWN, submit); stage.addEventListener(MouseEvent.MOUSE_DOWN, tool.deselect); }
/** * テキストAPIへ送信して、画像を取得します。 * @param event */ private function submit(event:Event):void { var value:String = input.text; var u:String = "text.php?value=" + encodeURIComponent(value) + "&font=APJapanesefont.ttf"; loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeEventHandler); try { loader.load(new URLRequest(u)); } catch (error:Error) { trace(error); } } /** * loadメソッドを呼び出したあと、受信したすべてのデータがデコードされ、 * Loader オブジェクトの data プロパティに配置されたときのイベントです。 * @param event イベント */ private function completeEventHandler(event:Event):void { var info:LoaderInfo = event.target as LoaderInfo; var loader:Loader = info.loader as Loader; var bmp:Bitmap = Bitmap(loader.content); var bitmap:BitmapData = bmp.bitmapData; var matrix:Matrix = new Matrix(); matrix.tx = -Math.round(bitmap.width / 2); matrix.ty = -Math.round(bitmap.height / 2); var child:Sprite = new Sprite(); child.graphics.beginBitmapFill(bitmap, matrix, false, true); child.graphics.drawRect(matrix.tx, matrix.ty, bitmap.width, bitmap.height); child.graphics.endFill(); child.scaleX = child.scaleY = 0.6; child.x = child.width / 2 + 10 + Math.floor(Math.random() * 300); child.y = child.height / 2 + 15 + Math.floor(Math.random() * 150); addChild(child); child.addEventListener(MouseEvent.MOUSE_DOWN, tool.select); }
サンプル
ソースコードはFlashエリア上を右クリックで [View Source] からどうぞ。
* サンプルのフォントには あんずもじ を使わせて頂きました。
- Example:テキストを画像変換してバウンディングボックスで自由変形