Mouse polling

Björnke von Gierke bvg at mac.com
Sat Mar 2 19:55:01 EST 2002


After reading the whole discussion on the "mouse" function twice, i 
still don't see exactly where the trouble comes from. Thus I wrote this 
long winded mail. Maybe im just too stupid (or my english isn't good 
enough) to understand where people have problems, but here is what I 
think the mouse SHOULD do:

script:
if the mouse is down

result:
true when the mousebutton is down when the script comes to the execution 
of the above line.

this automatically leads to the following:

script:
repeat until the mouse is down
beep
end repeat

result:
This beeps repeatedly until the mouse is pressed while the script comes 
to the execution of the first line (because then: the mouse is down = 
true and the loop exists)
Note: Don't try the script. Would beep really often and scare your cat 
away.
Also interesting: If you put this in a mouseDown handler it will not 
beep (or only once? not sure here), as the mouse is already down (unless 
you are a really astounding fast clicker (professional quake gamer?)).

I just don't understand how this can lead to any problem at all? A 
different mater is the following example:

script:
repeat while the mouse is down
set the loc of field "grabMe" to the mouseLoc
end repeat

result:
This will move the field around (kinda dragging) until you release the 
mousebutton.
Maybe. As sometimes "the mouse" seems to "stick" to a certain state 
(good to know command-. in such cases!) Note that repeated clicking does 
not resolve the problem. Here seems to come something strange into the 
whole: Does the loop "forget" to check every round if the mouse is down? 
Does it repeat until it receives a mouseUp for speed purpose? Kind of  
cheating it would be, says Yoda. Or is it just underrun by the 
Quake-capabilities of the clicker? No one knows...
Note: If the Loop would have more commands in it (slowing it 
considerably down) the cursor would naturally leave the field behind, if 
you want to have live dragging, use the grab function instead! Also if 
you release the mouse under such slow circumstances but  click again 
before the loop checks the state of the "mouse" again it should still 
keep relocating the field.
But it doesn't! I tested it with wait,  and instead it sends you (once 
again) into endless dragging land.

So to me there seems a merely technical problem in the implementation of 
the "mouse" function, a bug. But Scott says that "the mouse" merely does 
strange thing to my computer, and thus should not be used. This is the 
point where I always get lost :-(
could someone (Scott) please explain to me (again) what the difference 
makes between the second and the last example and why that makes "the 
mouse" a not-so-well function, I mean it just checks a property!  /Me 
doesn't get it...

thank you
Björnke von Gierke




More information about the use-livecode mailing list