rectangle of 0,0,0,0 ok?

Scott Rossi scott at tactilemedia.com
Sun Jan 18 19:25:04 EST 2004


On 1/18/04 3:49 PM, "Doug Lerner" <doug at webcrossing.com> wrote:

>>> Those don't truly *hide* the field, in the sense that if you check to see if
>>> the mouse is in the region of the field it still turns out to be true, even
>>> if the field is not visible.
>> 
>> How are you testing the mouse?  When I use the following script and the
>> field is hidden, the result is consistently false:
>> 
>> put within(fld myField,the mouseLoc)
> 
> if exists(field "canvas") and the mouseLoc is within the rectangle of field
> "canvas" then
> 
> This shows true whether or not the field is hidden.

That's because you're testing the rect of the field, which is a position on
the card, as opposed to testing if the mouse is within the field object
itself. Try testing the field itself as explained above.

You can also gain speed improvements by testing variables instead of testing
physical objects.  For example, you can use properties to store the presence
of the canvas field and its rect from other scripts, and then test the
properties, instead of testing the actual objects.  Something like:

 on mouseDown
   -- TEST THE SITUATION ONCE
   if exists(fld "canvas") and the visible of fld "canvas" then
      set the uCanvasRect of this cd to the rect of fld "canvas"
      set the uCanvasReady of this cd to true
   end if
 end mouseDown

 on mouseMove X,Y
   -- EXIT IF THE SITUATION IS NOT APPROPRIATE
   if not the uCanvasReady of this cd then exit mouseMove
   if (X&","&Y) is  within the uCanvasRect of this cd then
      -- do my stuff
   else
      -- do other stuff
   end if
 end mouseMove

 on mouseUp
   hide fld "canvas"
   set the uCanvasReady of this cd to false
 end mouseUp


The above may not be completely appropriate to your situation but may give
you an idea of where to start.

Regards,

Scott Rossi
Creative Director
Tactile Media, Development & Design
-----
E: scott at tactilemedia.com
W: http://www.tactilemedia.com



More information about the use-livecode mailing list