If it's a large area at all that you're talking about, even events that don't do anything until collision and have no graphics will add significantly to your lag issues. It's possible to use conditional branches questioning the facing of the player, but that could lead to whole other issues: if the player hits just the spot where you turn encounters on but doesn't cross over it, then turns back, encounters won't disable. You could get over that by forcing the player to take a step forward whenever he crosses the event. In either XP or VX, it should look something like this:
Player Touch Event
@>Set Move Route: Player
:$>1 Step Forward
@>Conditional Branch: Player is Facing Down
@>Change Encounter: Enable
@>
Else
@>Change Encounter: Disable
@>
Branch End
@>
This would, of course, go on the north end of your field. For the east end, check if facing left, west end checks right, and south end checks up.
For rectangular areas, if you're using VX, it may actually be beneficial to use a code snippet I posted. It's located in
this thread at the fifth post down. With this little code inserted below Materials, you can do an event that looks something like the following:
Parallel Process Event:
@>Wait: 10 Frames
@>Conditional Branch: Script: get_distance(-1, [5,3]) < 4 and $game_player.y == 3
(Insert the code from the other event here.)
This will check 6 times/second whether the player is within 3 tiles of the point (5, 3) on the map, and whether he's standing on the line y=3. If both are true, it'll run the event. Now, you can use this tactic to trigger a conditional by walking onto any point (rather than just where the event is), across any line (bounded by a distance from a given point, as done in the example I just gave), or by walking into any circular area.
Using this method is simplest if you're dealing with rectangles, but if you're using VX, you probably use Areas for that anyway. It's also most efficient if you're dealing with large areas.
I will go check whether the method can port over to XP seamlessly (and I might smooth it out a bit more in the process.) If it doesn't, I'll fix it and edit my post in the other thread to include it. Either way, I'll fill you in with an edit to this post (or a reply, if somebody else has said something since.)
Quick edit: On second thought, if you're using the line-checking option, you can check two parallel lines rather than stepping forward. If the player's on the inner line, turn encounters on, and if on the outer line, turn them off.
Final edit: The snippet works in both programs now, and I've improved the handling so you don't need so many stupid arguments in the call. Feel free to use it.