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