so, if i place the replay button in my world manually, it works just fine, however if it spawns in for example if my player dies, it wont work.
heres the code for the replay button :
and heres the code for when its called :
import greenfoot.*; import java.util.List; public class replay extends Actor { private GreenfootImage replay1 = new GreenfootImage("replay1.png"); private GreenfootImage replay2 = new GreenfootImage("replay2.png"); public void act() { GreenfootSound buttonMusic = new GreenfootSound("button.mp3"); Actor checkpoint = getOneIntersectingObject(ckeckpoint.class); MouseInfo mouse = Greenfoot.getMouseInfo(); if(mouse != null) { setImage(replay1); List objects = getWorld().getObjectsAt(mouse.getX(),mouse.getY(),replay.class); for (Object object : objects) { if(object == this) { setImage(replay2); } if(Greenfoot.mouseClicked(this)) { buttonMusic.setVolume(25); buttonMusic.play(); Greenfoot.setWorld(new level1()); } } } } }
public void act() { GreenfootSound hitMusic = new GreenfootSound("hit.mp3"); if(health == 0) { if(getWorld().getObjects(gameover.class).isEmpty()) { getWorld().addObject(new gameover(),300,200); } if(getWorld().getObjects(replay.class).isEmpty()) { getWorld().addObject(new replay(),300,350); } hitMusic.setVolume(50); hitMusic.play(); animateDeath(); return; } fall(); jump(); move(); stand(); shoot(); hit(); health(); counter++; Actor portal = getOneIntersectingObject(portal.class); if(getY() == getWorld().getHeight()-1) { if(getWorld().getObjects(gameover.class).isEmpty()) { getWorld().addObject(new gameover(),300,200); } if(getWorld().getObjects(replay.class).isEmpty()) { getWorld().addObject(new replay(),300,350); } hitMusic.setVolume(50); hitMusic.play(); getWorld().removeObject(this); } if(portal != null) { Greenfoot.setWorld(new level2()); } }