Update: Thanks to a reply from Bert Freudenberg, this project now works as I intended it to. The solution is to replace all "[obj] do [script]" tiles with just "[obj] [script]" tiles.

Q: in the following project (which you can click to download/save), I have 3 objects, p1,p2,pt. I'd like to simply create copies of these objects in a new project - essentially being able to clone the objects (and scripts). So I open this project then create a 'NEW' project (Nav tab), then click inside this new/empty project ('Unnamed2') to open it (this seems to be a necessary step before I can drop objects into it), then click 'PREV' (Nav tab) to return to the original project, then drag/drop the 3 objects (p1,p2,pt) into the iconified 'Unnamed2' project. When you successfully drop/copy an object into the iconified project, you'll see a 'GOT IT!' message briefly appear there. After copying all 3 objects into the new project and then clicking on it to open it, I see the object names are now: p1, P3 (instead of p2), and Pt1 (instead of pt). Can someone tell me why? And of course the scripts (for p1) do not work, not surprisingly.
I should add that, when I start from scratch and create a new proj, then create objs p1,p2, then copy them into a new project, they seem to copy (and retain their names/behaviors) just fine. What is it that happens to a project, perhaps after going through several versions, that causes its objects to no longer be 'cloneable'?
Update: 6/22/05: Thanks to Pierre-Andre, who replied to my post, I now know the trick to copying multiple/interdependent objects to another project - you must first put them on a playfield and then drop the playfield into the new project. This supports my growing belief that it's probably a good habit to create objects on a playfield to begin with. An added hint: to make the playfield draggable, go into the playfield's menu and turn off the "resist being picked up" toggle (which seems to be on by default). Also, when dragging/dropping the playfield into the new project, be sure your mouse cursor is actually over the new project thumbnail. Once the object-filled playfied is copied into the new project, the object names do indeed seem to change (or at least some of them); however, the scripts are updated accordingly and work. Well, there's still one bit of confusion, as shown in the following screen captures. After copying the playfield into the 'Unnamed2' project, we see that the circle object undergoes a name change from 'Sketch2' to 'Sketch3', however, in the 'follower' script, it still uses 'Sketch2'. Not until we toggle to show the script's textual code (via square icon along the top) do we see that it's actually using 'Sketch3'; toggling back to the tiles will update the name properly.
A wishlist, of sorts:
> create a var (default num type) and put an assignment tile for it in a script;
then change the var type, the script assignment is not updated.
> I'd like to be able to drag/drop/replace a tile anywhere in an assignment
tile, not just at the end
> trying to copy objects (and hence their scripts) from one project to another
seems to give me fits. Sometimes the new scripts simply don't work properly
and I have to manually recreate certain lines in a script with what seems to
be indentical to what's already there. Also, is it possible that the "decimal
places" of accuracy on variables might not carry over with copied objects?
A typical way I copy objects from one proj to another is by dragging them
into the Supplies tab.
A related question: why, when copying objs from one proj to another, do the
obj names get a numeric suffix appended? Why not just use the exact same name,
assuming there are no name conflicts?
> tile to create a sibling
> multi-obj selection/deletion (e.g., watchers)
> quicker turnaround on mailing list postings
-> 6/21/05 seems to no longer be an issue
> have object picking work inside-out, rather than outside-in (world->obj)
-> 6/21/05 seems to no longer be an issue; 7/20: hmm, still a problem - at least in a playfield/geemail
> the ability to set color (RGB) in a script (please,please!)
> scripting category:(obj) do (script) -- selecting (script) to show all scripts seems like it
should only show those scripts for that particular obj;
it lists all scripts of all objs - leading to confusion/error
if, e.g., obj A has a script named 'init' and so does obj B
> make a copy of a script (auto-name it "script-copy" or something)
> math operations: left->right, "normal" operator hierarchy, parens?
> keep paintbrush/object creator up for multiple obj creations; maybe a 'Keep/Cont' button
> create multiple vars "all at once"
> 'for' loops in a script
> scrollable categories & scripts
> ability to change default heading - e.g, "0" points to right instead of up
> comments in scripts
> after renaming a script, it doesn't get updated in a script "obj do (script)"
> can't rename a script with a hyphen ("-") in it; nor an underscore ("_")
> draw a circle: ball's heading (decimal places=0) -> 2.025...e-13 Why no rounding?
> var: incr by, decr by, mult by - why no 'div by'?
> I like the fact that when I rename a sketch, e.g. "obj", that subsequent copies (Duplicates)
of that obj take on the root name; is it possible to change the default root name of a sketch?
> after 'embedding' an obj into a playfield --> 'create a slot for foo?' ??
> multiple 'Undo's for painting
> arrays
> change decimal places of a var, watcher doesn't reflect the change
> playfields' 'input' category?
> ability to arrange vars in vars category
> ability to 'undo' an obj resize
> default 'embedding' of a sketch seems to be the world, why not make it embedded
in a playfield (or whatever) if that's where it's painted originally?
> dropping an assignment tile into world auto-creates a script; but not if
I drop it in a playfield
> I'm able to rename 2 sketches to have the same name - which would seem to lead
to confusion
> entering a value for variable which is < 1 (e.g. 0.1) requires entering the leading 0
> let me drop a tile from category B into category A (e.g. 'basic')
> I can't name a script 'update'? (it tacks on a numeric suffix; apparently
there's an underlying method named 'update')