Forums

ForumsProgramming Forum

Keyboard

Posted May 11, '13 at 4:37am

alex57834

alex57834

89 posts

I'm not quite sure whats wrong. I have received no errors just right and left keys not moving the basket.

package  {
   
    import flash.display.MovieClip;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import flash.events.KeyboardEvent;
    import flash.ui.Keyboard;
    import flash.events.Event;
   
    public class MainGame extends MovieClip {
       
        public var army:Array;
        public var gb:GoldBar;
        public var basket:Basket;
        public var gameTimer:Timer;
        public var leftKeyPress:Boolean;
        public var rightKeyPress:Boolean;

        public function MainGame()
        {
            leftKeyPress = false;
            rightKeyPress = false;
           
            addEventListener(Event.ADDED_TO_STAGE, onAddToStage);
           
            army = new Array();
           
            basket = new Basket();
            basket.x = 225;
            basket.y = 100;
            addChild(basket);
           
            gameTimer = new Timer(25);
            gameTimer.addEventListener(TimerEvent.TIMER, onTick);
            gameTimer.start();
           
        }
       
        public function onTick(e:TimerEvent):void
        {
            if( Math.random () < 0.08 )
            {
               
                var randomX:Number = Math.random() * 500;   
                var gb = new GoldBar(randomX , -20);
                army.push(gb);
                addChild (gb);
               
                for each (var gb in Army)
                {
                    gb.moveDown();
                }
               
            }
           
                if( rightKeyPress == true)
                {
                    basket.Move(1);
                }
               
                if (leftKeyPress == true)
                {
                    basket.Move(-1);
                }
        }
       
        function onAddToStage(e:Event):void
        {
            stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPress);
            stage.addEventListener(KeyboardEvent.KEY_UP, onKeyRelease);
        }
       
        public function onKeyPress(e:KeyboardEvent):void
        {
            if(keyboardEvent.keyCode == Keyboard.RIGHT)
            {
                rightKeyPress = true;
            }
           
            if(keyboardEvent.keyCode == Keyboard.LEFT)
            {
                leftKeyPress = true;
            }
        }
       
        public function onKeyRelease(e:KeyboardEvent):void
        {
            if(keyboardEvent.keyCode == Keyboard.RIGHT)
            {
                rightKeyPress = false;
            }
           
            if(keyboardEvent.keyCode == Keyboard.LEFT)
            {
                leftKeyPress = false;
            }
        }

    }
   
}

package  {

    import flash.display.MovieClip;
   
    public class Basket extends MovieClip {
   
        public function Basket()
        {
           
        }
       
        public function Move(xMove:Number):void
        {
            var baseSpeed:Number = 3;
            x += (xMove * baseSpeed);
        }
    }
   
}

 

Posted May 11, '13 at 6:27am

strouthas

strouthas

24 posts

On keyboard listeners replace keyboardEvent.keyCode with e.keyCode and you are done.

 

Posted May 11, '13 at 7:11am

alex57834

alex57834

89 posts

doesn't work all the other functions work except the keyboard stuff. I put traces in all the functions but none showed so I can't tell where it has gone wrong.

package  {
   
    import flash.display.MovieClip;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import flash.events.KeyboardEvent;
    import flash.ui.Keyboard;
    import flash.events.Event;
   
    public class MainGame extends MovieClip {
       
        public var army:Array;
        public var gb:GoldBar;
        public var basket:Basket;
        public var gameTimer:Timer;
        public var leftKeyPress:Boolean;
        public var rightKeyPress:Boolean;

        public function MainGame()
        {
            trace("game has started");
            leftKeyPress = false;
            rightKeyPress = false;
           
            army = new Array();
           
            basket = new Basket();
            basket.x = 225;
            basket.y = 100;
            addChild(basket);
           
            gameTimer = new Timer(25);
            gameTimer.addEventListener(TimerEvent.TIMER, onTick);
            gameTimer.start();
           
            addEventListener(Event.ADDED_TO_STAGE, onAddToStage);
        }
       
        public function onTick(e:TimerEvent):void
        {
            if( Math.random () < 0.08 )
            {
                var randomX:Number = Math.random() * 500;   
                var gb = new GoldBar(randomX , -20);
                army.push(gb);
                addChild (gb);
               
                for each (var gb in Army)
                {
                    gb.moveDown();
                }
               
            }
           
                if( rightKeyPress);
                {
                    Basket.moveAway(1);
                }
               
                if (leftKeyPress);
                {
                    Basket.moveAway(-1);
                }
        }
       
        function onAddToStage(e:Event):void
        {
           
            stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPress);
            stage.addEventListener(KeyboardEvent.KEY_UP, onKeyRelease);
        }
       
            public function onKeyPress(e:KeyboardEvent):void
        {
            if(e.keyCode == Keyboard.RIGHT);
            {
                rightKeyPress = true;
            }
           
            if(e.keyCode == Keyboard.LEFT);
            {
                leftKeyPress = true;
            }
        }
        public function onKeyRelease(e:KeyboardEvent):void
        {
            if(e.keyCode == Keyboard.RIGHT);
            {
                rightKeyPress = false;
            }
           
            if(e.keyCode == Keyboard.LEFT);
            {
                leftKeyPress = false;
            }
        }

    }
   
}

package  {
   
    import flash.display.MovieClip;
   
    public class Basket extends MovieClip {
       
        var baseSpeed:Number;
   
        public function Basket()
        {
            baseSpeed = 3;
        }
       
        public function moveAway(xMove:Number):void
        {
            x += (xMove * baseSpeed);
        }
    }
   
}

 

Posted May 11, '13 at 9:52am

strouthas

strouthas

24 posts

Well, I tried it my self and works fine, I had to remove the GoldBar Class though as it wasn't included in your code togehter with the portion in the timertick function to make it work. Btw there is a typo in there as well:

army.push(gb);
for each (var gb in Army)
      {
              gb.moveDown();
      }

beware the capitalization.

The interseting point is you said that there were no warnings or errors, but in my CS5.5 F;ash Pro doesn't compile with that.

If you still have problems, let me know and I will upload for you the working  .fla and .as I tested already.

 

Posted May 11, '13 at 11:24am

weirdlike

weirdlike

533 posts

Knight

your key input need to be switch and you need an event listener for when the boolean is true here I give you my controls.as file all you need is to use

public static var up:Boolean = false;
public static var down:Boolean = false;
public static var left:Boolean = false;
public static var right:Boolean = false;

controls.addWASD(stage);

or

controls.addArrow(stage);

addEventListener(Event.ENTER_FRAME, keyInput);
function keyInput(event:Event):void
{
    if (left)
    {
        trace("LEFT");
    }
    if (right)
    {
        trace("RIGHT");
    }
    if (up)
    {
        trace("UP");
    }
    if (down)
    {
        trace("DOWN");
    }
}

LINK
to download you might need to right click > save as

 

Posted May 11, '13 at 11:58am

weirdlike

weirdlike

533 posts

Knight

if you use my controls.as file you will need to change the

public class controls extends gamePlay

to

public class controls extends MainGame

it needs to extend from the main game constructor

 
Reply to Keyboard

You must be logged in to post a reply!