Hello Nacho,
It is even simpler as you seems to imagine.
First you don't need to subclass EllipseMorph if all you want is a
ball, then you don't need the position attribute, Morph always
knows about positionning.
Then, the #drawOn: method is to do the drawing, you don't need to
subclass as long as you don't need a different drawing. Color,
border should be set elsewhere.
The redbox with the cross appears in a Morph area when its drawing
gets wrong, here your override in drawOn:
For inspiration you can copy and paste the code example bellow; as
you mentioned animation, it shows you a few tips on that matter.
Good exploration
Hilaire
| aBall |
aBall := EllipseMorph� new.
aBall borderWidth: 10;
��� borderColor: Color green;
��� color: Color white;
��� extent: 100@100.
aBall position: ( 10@100 ).
aBall openInWorld.
100 to: 50 by: -1 do: [ :x |
��� aBall
��� ��� height: x;
��� ��� bottom: 200 - x.
��� World doOneCycle]
Le 04/02/2015 19:00, nacho a �crit�:
Hi,
I have the following question:
I want to draw a bouncing ball.
First thing I do is create a class:
EllipseMorph subclass: #Ball
instanceVariableNames: 'position'
classVariableNames: ''
category: 'PBE-BouncingBall'
Then an initialization method that mostly do a super initialize.
Then the drawOn:
drawOn: aCanvas
aCanvas borderWidth:10; borderColor: Color green.
And finally a position method:
position: aPoint
super position: aPoint.
position
^ position.
Finally in a Playground I do:
| aBall |
aBall := Ball new.
aBall position: ( 10@10 ).
aBall openInWorld.
But I get a red box with two crossing yellow lines.
What I'm missing?
Thanks in advance.
Nacho
-----
Nacho
Smalltalker apprentice.
Buenos Aires, Argentina.
--
View this message in context: http://forum.world.st/Question-on-Morphic-drawOn-method-tp4803695.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
--
Dr. Geo - http://drgeo.eu
iStoa - http://istoa.drgeo.eu