So, for the ones who also looked very long, here is an example.
This sample also disables the ENTER key. Only when you hit SHIFT+ENTER it adds a new line to the textfield
public class TextfieldSample extends Sprite
{
private var textfield:TextField;
public function TextfieldSample()
{
//Creating the textfield an adding it on stage.
textfield = new TextField();
//event to disable the ENTER key
textfield.addEventListener(TextEvent.TEXT_INPUT, handleTextEvent);
//event to enable SHIFT+ENTER key
textfield.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);
//Make it an input textfield
textfield.type = TextFieldType.INPUT;
//Just use border to show it easy on stage.
textfield.border = true;
//You need multiline for adding new lines.
textfield.multiline = true;
addChild(textfield);
}
private function handleTextEvent(event:TextEvent):void
{
if (event.text.charCodeAt() == 10)
{
//char code 10 == ENTER key
event.preventDefault();
}
}
private function handleKeyDown(event:KeyboardEvent):void
{
if(event.shiftKey)
{
if(event.keyCode == Keyboard.ENTER)
{
//You need to give something else the focus, otherwise the textfield is blocked
//and adding the new line will not work.
stage.focus = stage;
//Don't use appendtext for adding a new line, this function does not puts the new line in the correct position.
textfield.replaceText(textfield.selectionBeginIndex, textfield.selectionBeginIndex, "\n");
//Give the textfield the focus again
stage.focus = textfield;
}
}
}
}
If you have any improvement for this code, just let me know...
No comments:
Post a Comment