On 29.03.2011, at 12:49, Steve Thomas wrote:

For example, I want to some buttons to transform a costume or set an objects color  and I want to click on the button and then be able to click on an object (or set of objects) and run a particular script on the objects I click on.

I could program each object to perform a particular action on Mouse Down, but I would rather write the script once and then have that script execute on the object I click.  I was able to achieve this by using a Player variable watcher and then having a constantly running script that tests if the myPlayer != dot and if so, run the script on the Player variable value, then reset to dot. But besides looking ugly (the dot always shows) I can only run on one object at a time then have to click on the Player variable's watcher.

Thanks,
Stephen

Well, Etoys is really object-centric. So adding the mouseDown script to each object is the Right Thing to do. But if you want to "centralize" what actually happens when clicked, you could call a "dispatching" script and pass the object itself as argument. Give that script a parameter of type "Player" so it can execute to the current command.

I'm attaching an example project. To make a new command, just duplicate an existing one and change its "actOn:" script.

- Bert -