こんにちは。きんくまです。
TLF(Text Layout Framework)で、編集可能なTextFlowを作りたかったです。
そんで、通常だとEnterキーを押すとそのまま改行されてしまうのですが、
それを1行にするように挙動をかえました。
まず、EditManagerのサブクラスを作ります。
キーボードのEnterが押されたときに何もしないようにします。
package { import flash.events.KeyboardEvent; import flash.ui.Keyboard; import flashx.textLayout.edit.EditManager; import flashx.undo.IUndoManager; public class CustomEditManagner extends EditManager { public function CustomEditManagner(undoManager:IUndoManager=null) { super(undoManager); } override public function keyDownHandler(event:KeyboardEvent):void { if(event.keyCode != Keyboard.ENTER){ super.keyDownHandler(event); } } } }
次に、それをTextFlowのinteractionManagerにひもづけます。
これで完了です!
package { import flash.display.Sprite; import flashx.textLayout.formats.LineBreak; import flashx.textLayout.container.ContainerController; import flashx.textLayout.conversion.TextConverter; import flashx.textLayout.edit.EditManager; import flashx.textLayout.elements.TextFlow; [SWF(width="450", height="450", frameRate="30")] public class OneLineEditableTLF extends Sprite { public function OneLineEditableTLF() { createTextLine(); } private function createTextLine():void { var sp:Sprite = new Sprite(); addChild(sp); sp.x = 100; sp.y = 50; var markup:XML =; var textFlow:TextFlow = TextConverter.importToFlow(markup, TextConverter.TEXT_LAYOUT_FORMAT); var containerController:ContainerController = new ContainerController(sp, 200, 16); textFlow.flowComposer.addController(containerController); var editManager:EditManager = new CustomEditManagner(); textFlow.interactionManager = editManager; textFlow.fontSize = 16; textFlow.lineBreak = LineBreak.EXPLICIT; textFlow.flowComposer.updateAllControllers(); } } } Hello, World
■ 自作iPhoneアプリ 好評発売中!
・フォルメモ - シンプルなフォルダつきメモ帳
・ジッピー電卓 - 消費税や割引もサクサク計算!
■ LINEスタンプ作りました!
毎日使える。とぼけたウサギ