This site requires JavaScript, please enable it in your browser!
Greenfoot back
jc5879
jc5879 wrote ...

2018/10/22

how to stop actor when being clicked the ball?

jc5879 jc5879

2018/10/22

#
I really have no idea about a code. /** * When being clicked, the ball rolls to the right by some random distance * and then stops. When being clicked again, the same thing happens. * Note, the ball has to roll instead of skipping or jumping to the right. */ public class Ball extends Actor { private int oldX = 0; private int newX = 0; public void act() { if (Greenfoot.mousePressed(this)){ int deltaX = Greenfoot.getRandomNumber(100); newX = oldX + deltaX; } if (oldX != newX){ setLocation(getX()+1, getY()); } } }
danpost danpost

2018/10/23

#
With the current code, once a positive deltaX is added to newX, newX will never again equal oldX as oldX starts at zero and never changes. It looks like you want oldX to represent the current x-location of the ball, which can always be gotten with the getX method. Remove the oldX field and change two other instances of oldX among the if blocks to getX().
jc5879 jc5879

2018/10/23

#
How do I get the code? Can you show the example?
danpost danpost

2018/10/23

#
jc5879 wrote...
How do I get the code? Can you show the example?
I wrote:
Remove the oldX field and change two other instances of oldX among the if blocks to getX().
See above.
jc5879 jc5879

2018/10/23

#
Thank you ! I figure it out.
You need to login to post a reply.