[Newbies] Mophic scripts tiles vs textual code

Bert Freudenberg bert at freudenbergs.de
Mon Jun 4 11:10:29 UTC 2007


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".
>>






More information about the Beginners mailing list