sez [EMAIL PROTECTED]: >On 22 Apr 2005, at 11:53, David Glasgow wrote: >> I have an assessment that may be used with people with significant >> motor skills problems. At a point when they have to use a rating >> scale I constrain the pointer so it can't 'fall' of the scale. >I don't know in which kind of control structure you used the code above, >but I changed it a bit and put it inside a mousemove handler. >The code seems to work without jerks or delayed mousemovements or extra >overhead: > >on mousemove x,y > get rect of fld "container" > if x,y is not within it then > if x < item 1 of it then put (item 1 of it + 4) into tX --left >of field "container" > else if x > item 3 of it then put (item 3 of it - 4) into tX >--right of field "container" > else put x into tX > if y > item 4 of it then put (item 4 of it - 4) into tY >--bottom of field "container" > else if y < item 2 of it then put (item 2 of it + 4) into tY >--top of field "container" > else put y into tY > put (left of this stack) + tX into item 1 of tLoc > put (top of this stack) + tY into item 2 of tLoc > set the screenmouseloc to tLoc > end if >end mousemove I don't believe that mega-IF statement is truly necessary. Try this instead:
on mouseMove X,Y put the rect of fld "container" into Fred put min (item 3 of Fred - 4, max (item 1 of Fred + 4, X)) into X put min (item 4 of Fred - 4, max (item 2 of Fred + 4, Y)) into Y set the screenMouseLoc to (X,Y) end mouseMove If the mouseLoc is within the specified rectangle, the mouse's X co-ord will be less than item 3 of the rect, and greater than item 1 of the rect. Thus, max (item 1 of rect, the mouse X) will always result in a number *at least* as large as that item 1, and min (item 3 of rect, the mouse Y) will always result in a number *no greater than* that item 3. Plug the results of the max into a min (sorry about how that sounds, but you get the idea, right?), and you end up with a number that *must* be somewhere between item 1 of the rect and item 3 of the rect. Something similar applies to the mouse's Y co-ord, and items 2 and 4 of the rect. Hope this helps... _______________________________________________ use-revolution mailing list [email protected] http://lists.runrev.com/mailman/listinfo/use-revolution
