A Flash Developer Resource Site

Results 1 to 3 of 3

Thread: restricting movement from arrow keypad

  1. #1

    restricting movement from arrow keypad


    I am playing around making a little game from a tutorial and i am having trouble trying to limit where the "car" can travel on the screen. At present it has a free range and will disappear out of view if asked to. Can anyone make a suggestion what code i need to add? I have been searching and trying for two hours but just cant get it to work.

    This is what i have at present


    listener = new Object();
    listener.onKeyDown = function () {
    delete car.onEnterFrame;
    var yval = 0;
    var xval = 0;
    switch (Key.getCode()) {
    case Key.DOWN: yval = 8; car.rotate(30,30); break;
    case Key.UP: yval = -8; car.rotate(-30,30); break;
    case Key.LEFT: xval = -8; car.rotate(-30,30);break;
    case Key.RIGHT: xval = 8; car.rotate(30,30);
    car.onEnterFrame = function(){
    this._y += yval;
    this._x += xval;


    Basically i just want to limit the cars movement to within the track!
    Any help or advice would be greatly welcomed.


    EDIT: Added as tags. - jbum
    Last edited by jbum; 10-11-2004 at 03:44 PM.

  2. #2
    Senior Member jbum's Avatar
    Join Date
    Feb 2004
    Los Angeles
    Here are two methods you can use:

    Method #1: You can add bounds to your onEnterFrame handler, as follows:


    // Adjust these numbers to taste
    minX = 10;
    maxX = Stage.width-10;
    minY = 10;
    maxY = Stage.height-10;

    car.onEnterFrame = function()
    this._y = Math.min(Math.max(minY, this._y + yval), maxY);
    this._x = Math.min(Math.max(minX, this._x + xval), maxX);

    This will keep the car within a rectangle specified by minX-maxX and minY-maxY.

    Method #2: If you want to restrict the car to a more complicated shape, then you'll probably want to do a hitTest on the track, like so:

    For example:


    car.onEnterFrame = function()
    var nx = this._x + yval;
    var ny = this._y + xval;
    if (_root.track.hitTest(nx,ny,true))
    this._x = nx;
    this._y = ny;

  3. #3
    i want a rectangle shape so the first bit of code is fine.

    Thank you very much, people like you are priceless!


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Click Here to Expand Forum to Full Width

HTML5 Development Center