On 22 Apr 2005, at 11:53, David Glasgow wrote:


Revlistas,

This is a fairly lengthy preamble, so be patient.

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 know this is contrary to the HIG gospel, but it works very well. As soon as they have made a legitimate rating, the pointer is released. I suspect they don't even notice what happens, because of course they don't *want* to move off the scale, it just sometimes happens with a muscular jerk or difficulty stopping a purposeful move one way or the other.

Anyway, the build using 1.1.1 worked fine on Win & Mac classic. I downloaded the latest Rev, and tried a build of the assessment stack. I was disappointed with how many things broke, including the first effort at an OSX build.

Among the many glitches, I found that the constraining script resulted in horribly jerky and delayed mouse movements. The scale is unusable on OSX (10.3.8 - or maybe 7) but fine in classic and win. Is this an OS X thang? Well obviously it is, but is it at the Rev or OS end?

The script is below: Yes it is a hack, but it works OK. (By way of explanation the field 'container' is contiguous with the scale & the +4 and - 4 are just my way of adjusting the margin of error around the scale.

Any suggestions as to what might be happening would be gratefully received - or any alternative suggestions as to how to obtain the same effect....

if within (field "container",mouseloc()) = false
    then
      get the mouseloc

      switch
      case item 2 of the mouseloc > the bottom of field "container"
        put (the bottom of field "container" -4) into item 2 of it
        break
      case item 2 of the mouseloc < the top of field "container"
        put (the top of field "container" +4)into item 2 of it
      end switch

      switch
      case item 1 of the mouseloc < the left of field "container"
        put (the left of field "container" + 4) into item 1 of it
        break
      case item 1 of the mouseloc > the right of field "container"
        put (the right of field "container"- 4) into item 1 of it
      end switch

put (item 1 of the topleft of this stack) + (item 1 of it) into item 1 of it
put (item 2 of the topleft of this stack) + (item 2 of it) into item 2 of it


      set the screenmouseloc to it
    end if

Best Wishes,

David Glasgow


Hi David,

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


Hope this works for you.
Greetings,
Wouter

_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to