MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Event when clicking one of many Disks in a Pane

  • To: mathgroup at smc.vnet.net
  • Subject: [mg87448] Re: Event when clicking one of many Disks in a Pane
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Fri, 11 Apr 2008 01:40:54 -0400 (EDT)
  • References: <ftkbd6$bf6$1@smc.vnet.net>

Hi,

InDiskTest[pos_, Disk[c_, r_]] := Sqrt[#.#] &[pos - c] < r

InDisk[pos : {_?NumericQ, _?NumericQ}, disks : {_Disk ..}] :=
  Position[disks, d_Disk /; InDiskTest[pos, d]]


DynamicModule[{disks, pos = {}, k, where = {}, shape},
  disks = {Disk[{1, 1}, 0.5], Disk[{2, 2}, 0.5]};
  EventHandler[
   Dynamic[shape = disks;
    If[where =!= {},
     k = where[[1, 1]];
     shape[[k]] = shape[[k]] /. Disk -> Circle
     ];
    Graphics[{MapThread[List, {{Red, Green}, shape}]}]],
   {
    "MouseDown" :> (where = InDisk[MousePosition["Graphics"], disks])
    }
   ]
  ]

??

Regards
   Jens

robert prince-wright wrote:
> Can someone help me figure out how to use EventHandler
> to evaluate an expression when one of many Disk[]
> objects in a Graphics Pane is clicked.
> 
> For example suppose I create a red and green disk in a
> graphic:
> 
> Graphics[{Red, Disk[{1, 1}, 0.5], Green, Disk[{2, 2},
> 0.5]}]
> 
> Each disk is a separate and editable object in the
> graphics pane. Can I therefore associate an Event with
> a Mouseclick on each disk? To make matters simple lets
> say the disk change color from Red to Yellow and Green
> to Brown.
> 
> 
> 
> 
> Robert Prince-Wright
> Houston
> TX, 77006
> USA
> 
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around 
> http://mail.yahoo.com 
> 


  • Prev by Date: Re: Dynamic
  • Next by Date: Re: Event when clicking one of many Disks in a Pane
  • Previous by thread: RE: Event when clicking one of many Disks in a Pane
  • Next by thread: Re: Event when clicking one of many Disks in a Pane