Etoys is a layer on top of Smalltalk, so in most cases you can (unfortunately) not use the regular Smalltalk coding tools directly. OTOH, it's Smalltalk after all so of course you *can* access everything ;)

Also, the way you phrased it, it seems you may have missed the distinction between the the "player" which is the object that gets scripted, and the "morph" which is its costume. That distinction is not relevant to Etoys users but important if you do Smalltalk.

The simplest thing to reference the *player*, the equivalent to "PolyB" in a textual scriptor, is

        References at: #PolyB

To get at the *morph*, use

        (References at: #PolyB) costume

Now that only works for morphs that actually *have* a player, that is, the morphs that are scripted.

To reference any morph (and we're leaving the Etoys world with this) is to enable the "create textual references to dropped morphs" option in the Workspace's menu next to its close button.

- Bert -

On Jun 4, 2007, at 12:51 , David H. Shanabrook wrote:

Thanks, this worked and helped.

So to extend this, and help my understanding, how do I refer to a morph in a workspace? If I named the morph polyB, and I do something like "hide PolyB" in the workspace it asks about PolyB.


On 3 Jun 2007, at 14:26, Bert Freudenberg wrote:

On Jun 3, 2007, at 19:50 , David H. Shanabrook wrote:

Hi.

I am writing some simple morphic scripts. It would be convenient to use smalltalk directly, so I toggle the script to directly enter the code. But I am having problems, as it is not working. If I uses tiles to create a script and then toggle over to text mode, the script looks like this for script "showa":

showa
        self setX: PolyZb getX.
        self setY: PolyZb getY.
        self setHeading: PolyZb getHeading.
        PolyZb hide.
        self show

I think when I type the script in directly it doesn't know how to reference PolyZb (a polygon object I created).

You need to reference an object at least once in another object's tile script to make it "known" to the scripting system (*). After that, you can just type the name.

Any help? How does this translation between morph object's name and the internal SmallTalk name happen?

It's "Smalltalk", btw., with a lower-case "t".

- Bert -

(*) More precisely, #uniqueNameForReference must have been sent to the object to put it into the global registry named "References".





_______________________________________________
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Reply via email to