A few random comments from an eToy newbie
ned at bike-nomad.com
Mon Apr 7 15:48:55 UTC 2003
Here are the notes that I made when doing my "Karel's World" project.
I realize some of this behavior is by design, but there were some eToy
behaviors that I found frustrating, difficult, or buggy:
Dot vs. Dot
When you do a test for Holder.firstElement, the Holder may be empty. In
this case, it returns *a* Dot. However, this Dot is not *the* Dot.
Instead, it is *a* dot owned (created, in fact) by the Holder. I
got confused when I started moving Dot name tiles around.
no test for Holder.isEmpty
Instead of a simple test for whether a Holder is empty, you get a
test of whether Holder.firstElement is (or is not) "dot".
no test for isDot (i.e. is unscripted)
There seem to be multiple Dots (see above) filling in for (for
instance) nil in cases where you have to return some default value.
But there's no way I could see to test for dot-ness in a script.
Only test for firstElement ==/~= someObject
Should perhaps have isKindOf or isLike test? What would this be (looks like/acts like)?
Though phrase tiles and script editors themselves have identities
and viewers, and you can get tiles for them, etc., there is no way
to write (for instance) a script that adds to another script. I
wanted to have programming by example, but couldn't manage it.
Can't get to objects via noun phrases
Given a noun phrase (either a tile for an object, or a phrase that
returns an object), how can I get to a viewer for the object (or the
object's costume)? It doesn't seem to be easy. Finally I made a
script that I could drop a noun phrase on that just did "Something
doMenuItem viewer". But it would be nice to be able to directly get
a viewer (perhaps from a context menu).
The only phrase-specific menu item in the halo menu, though, is
"sprout a new scriptor around this phrase".
Mysterious subclassing (duplicate A twice, script one A1, other A1 doesn't behave similarly)
The structure of the various PlayerXX subclasses is not clear. It's
easy to write scripts in the wrong subclass after duplicating a
No return values from scripts -- second class citizens
How can I return a value from a script? Now that they take
parameters, this seems like the only limitation of a script.
Grid behavior casual at best
I wanted to have a properly gridded world. This was frustrating
because grid handling is inconsistent and awkward:
- polygons snap vertices to grid
- move/size snaps to grid
- but dropping SketchMorphs ignores grid.
- And aligning on origins is often less convenient than aligning
*where the morph is picked up* with the grid (or center, etc.)
Removing projects leaves objects & classes intact (I didn't isolate the project; can you do this later?)
Having built the project, I then wanted to load my new version for
testing. I got all my objects renamed (i.e. Robot became Robot2,
etc.) even though I'd removed the original project's window. It
turned out that all these objects were being pointed to by script
Didn't there used to be some way to isolate a project, or did that
go away with 3.3?
Can't pick apart phrase tiles
Given a phrase tile that says (for instance) "Holder's firstElement
show", I can select a PhraseTile that says "Holder's firstElement",
and then duplicate that PhraseTile. However, trying to use this new
PhraseTile results in a walkback.
Walkbacks on unrecognized menu items
If you tell an object of the wrong kind to do a menu item that it
doesn't provide, you get a walkback. You can do this, for instance,
by making a new script that has a Player parameter. Inside the
script, you write
Player doMenuItem viewer
When you right-button the tile ("viewer") that says which menu item
to perform you get a walkback.
GPG key ID: BEEA7EFE
More information about the Squeak-dev