I guess this might be more of a general Flash AS3 question, however it
applies while I'm attempting to make a game using Away3D, so I'll post
it here and hope someone can help me out...

My game is designed such that I use the arrow keys and space bar. I've
noticed that if I'm pressing UP and RIGHT at the same time, and then
press SPACE, everything is ok (my ship fires), however using UP LEFT
and then SPACE wont trigger the keydown event (my ship dosn't fire)...

If it helps here is the code I'm using (nicely wrapped in a package):

package
{
        import flash.events.KeyboardEvent;

        public class keys
        {
                public const LEFT_ARROW:int = 37;
                public const RIGHT_ARROW:int = 39;
                public const UP_ARROW:int = 38;
                public const DOWN_ARROW:int = 40;
                public const SPACE_BAR:int = 32;
                public var keysTracked:Array;

                public function keys(movieclip)
                {
                        keysTracked = new Array();
                        movieclip.stage.addEventListener(KeyboardEvent.KEY_DOWN,
keyDownHandler);
                        movieclip.stage.addEventListener(KeyboardEvent.KEY_UP,
keyUpHandler);
                }

                public function trackKey(keyCode:int):void
                {
                        keysTracked[keyCode] = false;
                }

                public function unTrackKey(keyCode:int):void
                {
                        keysTracked[keyCode] = undefined;
                }

                public function isKeyDown(keyCode:int)
                {
                        return keysTracked[keyCode];
                }

                function keyDownHandler(event:KeyboardEvent)
                {
                        if(keysTracked[event.keyCode] != undefined)
                                keysTracked[event.keyCode] = true;
                }

                function keyUpHandler(event:KeyboardEvent)
                {
                        if(keysTracked[event.keyCode] != undefined)
                                keysTracked[event.keyCode] = false;
                }
        }
}

Reply via email to