-
restricting movement from arrow keypad
Hi,
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
code:
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.
Barry
EDIT: Added as tags. - jbum
Last edited by jbum; 10-11-2004 at 03:44 PM.
-
Senior Member
Here are two methods you can use:
Method #1: You can add bounds to your onEnterFrame handler, as follows:
code:
// 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:
code:
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;
}
}
-
i want a rectangle shape so the first bit of code is fine.
Thank you very much, people like you are priceless!
Barry
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|