Old Articles - 6 years, 6 months ago - 0 Comments

onKeyDown VS onClipEvent(keyDown)

All movieclips automatically subscribe to amongst other objects, the Key objects event notifications, this means that you can define any of the Key event handlers within your movieclip, without having to explicitly subscribe to the Key objects, event notifications using the Key.addListener(mymovieclip) method…

However, if you are to define one of the Key event handlers inside of a movieclip, you must be aware that the event handler will only fire if the movieclip that contains the event handler currently has input focus, the user of the flash movie can manually change the currently focused movieclip by pressing the tab key on the keyboard, this displays a yellow outline around the currently selected instance unless this options was turned off by the author of the flash movie using:

movieclip._focusrect=false;

This means that the following code will not work as expected:

this.createEmptyMovieClip('_keyListener',1);
_keyListener.onKeyDown=function(){
    trace('Key was pressed');
}

Personally, and im sure i speak for most of us, i would expect the above code to output the words “Key was pressed” to the output window whenever a key was pressed.

For the same expected results in Flash 5 we would have previously and still can write the above code on the movieclip with an instance name of _keyListener as follows:

onClipEvent(KeyDown){
    trace('Key was pressed');
}

The above code in the Flash 5 Player and the Flash 6 Player, would output the words “Key was pressed” in the output window, whenever a key was pressed. However the code i posted at the beginning of this article:

this.createEmptyMovieClip('_keyListener',1);
_keyListener.onKeyDown=function(){
    trace('Key was pressed');
}

Does not output the words “Key was pressed” in the output window, whenever i press a key on the keyboard. This is because the onKeyDown event handler for movieclips differs from the onClipEvent(keyDown){} event handler, the Flash MX onKeyDown event handler requires the movieclip to be focused before the event is fired. So, if i want to run some code everytime a key is pressed on the key board, we can either use the old Flash 5 Event handler onClipEvent(KeyDown){}, or we can listen globally for the event notification, this means you have to subscribe the movieclip to the Key objects event notification as follows:

this.createEmptyMovieClip('_keyListener',1);
Key.addListener(_keyListener);
_keyListener.onKeyDown=function(){
    trace('Key was pressed');
}

And now everytime a key is pressed on the keyboard the words “Key was pressed” are shown in the output window.

The same dicrepancy is valid for the onKeyUp VS onClipEvent(keyUp){} event handlers.



Note: This is an old article!

Please be aware that the content of this article may no longer be accurate and the links contained within could be broken.

Update Notifications

You can add our RSS feed to your favorite feed reader or recieve an email when a new article is posted by entering your email address below.

    Shu Player allows you to distribute your AIR Applications to users that dont have the AIR Runtime by converting them to standalone applications. Shu Player also adds more commands to do things like open external applications etc…


    If you hate the Adobe Updater like most of us, then just get rid of it.


    Want to quickly find out what version of the Flash Player a client has installed? Send them to www.playerversion.com


    Yet more pv3d goodness. Im loving this funky 3D Flash Lab, the work of Mathieu Badimon. [Update: Apparently this uses Five3D not PaperVision]


    There is an old interview with me on The FWA, its fairly long at 8 pages.


    If you do alot of travelling then it makes sense to get yourself a Priority Pass, which will get you access to over 500 airport lounges worldwide, regardless of whether your flying enconomy, business or first.


    Freelance Switch is a freelancer community with forums, jobs, daily tips and a complete 212 page e-book titled “How to be a rockstar freelancer” for sale.


    Lots of new media jobs at Creative Pool.


    BBC IPlayer is awesome, but its ashame that BBC News is still using Windows Media Player and Real video. Real player is officially badware.


More In Actionscript


More In Adobe Flash


More In Freelancing