Showing posts with label actionscript. Show all posts
Showing posts with label actionscript. Show all posts

Friday, July 1, 2011

SHIFT+ENTER adding a new line - chat textfield

Looking all over the internet for a simple adding a new line when pressing SHIFT+ENTER... not to be found.

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...

Tuesday, May 3, 2011

AS3 - Children adding reverse

Today I learned an extra feature of adding children into a DisplayObject in reverse.
Normally I would make two loops. First one is adding the children, the second is placing the children in reverse.
But... it can be done so much easier:

for(var i:int = 0; i < numChildren; i++)
{

container.addChildAt(child,0);

}

The second parameter sets the child on the first place.

For many known, not for me.. maybe not for you either....

Thursday, July 23, 2009

getNextHighestDepth in as3

In as2 you were able to put a movieclip on top of all the other containing movieclips. I'm working with as3 now and was searching for this same option.

You can do it with one line of code:

as2:

//container is the parent of the movieclip
movieclip.swapDepths(container.getNextHighestDepth());

as3:

//container is the parent of the movieclip
container.setChildIndex(movieclip, (container.numChildren - 1));

Monday, June 15, 2009

SoundManager in as3

On the internet I found a very interesting class. I used it in a project I'm working on right now. It is a singleton class to load library or external sounds. So with some very simple lines of code you can implement and use the sounds.

you can download the class here:
http://evolve.reintroducing.com/2008/07/15/news/as3-soundmanager/

In your flash file you can set a linkage to the sound in your library:


To use the soundmanager simply use these lines:


//load the sound from library
SoundManager.getInstance().addLibrarySound(nl.Amercom.Sounds.MenuItem, "MenuItem");

//play the sound on a rollover or somewhere else
SoundManager.getInstance().playSound("MenuItem");