R0J0hound... That is a great solution! after seeing your solution, however, I think I have found a better way to do it that involves less performance drop and more accuracy (it does not at all stick into the walls.) I think all this is is a minor improvement on your way of solving it.
OK, so we have an instance variable for the laser called increment. It starts at 1000 or any value that you want to be the max range.
We start our loop.
If the laser does not collide with any walls, set the width to width + increment.
If the laser does collide with a wall, set the width to width - increment.
divide increment by 2.
Loop breaks when increment is less than or equal to one.
That is only 11 calculations per step (or 12 if you want a longer range of, say, 2000).
I think this may actually be the best solution to the problem. I hope this helps people with their laser issues!
Here is the improved example: dl.dropbox.com/u/41931267/Improved%20example.capx