Um, collisions would still be checked every tick, so thats a nope.
Also "for each" with distance() is contrary to most optimizations, even done sparingly, as its a loop, and the filtering method of "is on screen" should do all of that.
If you need to check a bigger area than the viewport check the objects xy's, like objectx< scrollx- n, and objectx> scrollx x+n, and objecty < scrolly-n, and objecty> scrolly+n.
Perhaps a better method would be in a behavior similar to the Line of Sight. Ashley ?
In fact that behavior may serve better in some situations.