[Newbies] Mophic scripts tiles vs textual code

Bert Freudenberg bert at freudenbergs.de
Mon Jun 4 15:53:37 UTC 2007

I'm not sure what exactly you want to achieve. "adding a method to a  
class" is how you approach things in Smalltalk. "Scripting an object"  
is what you do in Etoys. These two do not go well together, you have  
to choose. Etoys tile scripting is *not* an introduction to Morphic  
programming. It's a different world.

- Bert -

On Jun 4, 2007, at 15:00 , David H. Shanabrook wrote:

> This is getting clearer. So would a better approach be to add a  
> method for this class?  Would I add a method for PasteUpMorph such  
> as showa: polyb.  Looking at the following script, showa method  
> would show self, and hide the argument polyb?  Then when writing  
> the morph code I can refer to this new method?
> On 4 Jun 2007, at 07:10, Bert Freudenberg wrote:
>> 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