Morphic question

Hannes Hirzel hannes.hirzel.squeaklist at
Mon Feb 10 08:30:24 UTC 2003

Dustin Sallings <dustin+squeak at> wrote:
> 	I went through some of the morphic tutorials and I think I
> understand the basic concepts.  What I didn't get was the part where you
> create a morph class that will contain one or more embeded morph classes.
> 	I can instantiate them in a project and get them all embeded and
> all that, but I'd like to create a standalone morph of which I can easily
> create multiple instances.
> 	Any pointers?

A simple example is the LedMorph

If you evaluate (ALT-D in Windows) in a workspace

    LedMorph new openInWorld 

you get a LedMorph with two digits.

It was constructed by executing the code of the method initialize


	super initialize.
	flashing _ false.
	flash _ false.
	self scrollInit.
	self digits: 2.
	self value: 0.
	self color: Color green.

which contains the expression:

self digits: 2.

If you look into #digits:

digits: aNumber

	digits _ aNumber.
	self removeAllMorphs.
	1 to: digits do: [:i | self addMorph: (LedDigitMorph new color:
	self layoutChanged.
	self changed.

You see that #addMorph: is used.


To summarize

To come up with your own Morph you subclass an existing Morph
(class Morph is a good candidate as it already is very capable - it
has 1000 methods!)
and you write your own initialize method which uses #addMorph
to add submorphs.

There is a tutorial
which explains in a more detailed way how to do your own morph
(not by direct manipulation / construction but with Smalltalk code; 
section second and third approach)

Hannes Hirzel

More information about the Squeak-dev mailing list