Showing/Hiding Images on mouseLeave... IMPROVED
John J. Theobald
mailjjt at bellsouth.net
Sat Feb 8 23:18:01 EST 2003
> John J. Theobald wrote:
>
> erik hansen wrote:
>
> I simply put a transparent graphic behind my "freeform" shaped
> button. This graphic extends beyond the borders of my button. I
> then put this handler in the graphic.
>
> on mouseEnter put image "normalstate" into image "goback" end
> mouseEnter
>
> "goback" is the name of my "freeform" button, "normalstate" is the
> image I want displayed when I do a mouseLeave. Since leaving the
> button does not generate a mouseLeave (as you discovered), entering
> the transparent graphic DOES generate a mouseEnter and the opportunity
> to change the graphic.
>
>
> if the mouse enters the transparent graphic from the card, NOT from
> freeform btn "goback"?
>
> ===== erik at erikhansen.org http://www.erikhansen.org
>
> __________________________________________________ Do you Yahoo!? Yahoo!
> Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com
>
> _______________________________________________ use-revolution
> mailing list use-revolution at lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution
>
>
>
>
> When the mouse enters the transparent graphic from the card, it
> naturally sends the same "put" to the freeform button. But, the
> "normalstate" is what already exists, so it does a "put" that is
> not needed. In my case I use imported images, so it is a memory
> copy, no disk I/O. IMHO this is negligible overhead while
> accomplishing the desired result. If you wanted to eliminate the
> "put", just check the state of the image. Either way, the handler
> has to do some processing.
>
> John Theobald
>
> _______________________________________________ use-revolution
> mailing list use-revolution at lists.runrev.com
http://lists.runrev.com/mailman/listinfo/use-revolution
>
>
Upon further experimentation, I found I did not like the solution I
provided above because very fast mouse movements over the freeform
graphic could potentially leave it in an undesireable "state". I
imagine this is due to the system mouse polling and it's inability to
trap events under very fast movement and missing the mouseEnter on my
surrogate graphic.
So, I decided to write my own "mouseLeave" handler called checkMe for
the freeform button that is 100% consistent and accurate and involves no
surrogate graphics. I submit it as an improved and IMO more elegant
solution to the mouseLeave issue. Any enhancement suggestions welcomed.
####################################################################
on mouseEnter
put image "activestate" into me
send checkMe to me in 10 ticks # Check the mouseLoc for leave
end mouseEnter
on checkMe
if within(me, the mouseLoc) then
send checkMe to me in 10 ticks # Check back if still within
else # otherwise
put image "normalstate" into me # back to normal because we left
end if
end checkMe
####################################################################
I should have done more testing before suggesting my previous solution,
apologies to the list.
John J. Theobald
More information about the use-livecode
mailing list