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

2015/1/19

One actor 2 times, Removing one

sjoerdieman sjoerdieman

2015/1/19

#
public class ChooseaLevel1 extends MainMenuSideBar
{
    
    /**
     * Act - do whatever the ChooseaLevel1 wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
        small();
        hover();
    }    

    public void hover()
    {
        MainMenu world = (MainMenu) getWorld();
        if(Greenfoot.mousePressed(this) && MainMenuSideBar.levelOneIsClicked == false && MainMenuSideBar.levelSelected == false)
        {
            // animation
        } else if(Greenfoot.mouseClicked(this) && MainMenuSideBar.levelOneIsClicked == false && MainMenuSideBar.levelSelected == false)
        {
            MainMenuSideBar.levelOneIsClicked = true;
            world.addObject(new ChooseaLevel1(), 1090, 360);
        }
    }
    public void small()
    {
        if(MainMenuSideBar.levelOneIsClicked == false)
        {
            GreenfootImage image = getImage();
            image.scale(100, 200);
            setImage(image);
        } else if(MainMenuSideBar.levelOneIsClicked == true)
        {
            
        }
    }
}
How can i remove only the one that was created at this moment:
else if(Greenfoot.mouseClicked(this) && MainMenuSideBar.levelOneIsClicked == false && MainMenuSideBar.levelSelected == false)
        {
            MainMenuSideBar.levelOneIsClicked = true;
            world.addObject(new ChooseaLevel1(), 1090, 360);
        }
danpost danpost

2015/1/19

#
You can add a reference field to the class to hold the added actor so you can remove it when the conditions are right (I presume at line 35):
private World choice;
then when creating it:
else if(Greenfoot.mouseClicked(this) && MainMenuSideBar.levelOneIsClicked == false && MainMenuSideBar.levelSelected == false)
{
    MainMenuSideBar.levelOneIsClicked = true;
    choice  = new ChooseaLevel1();
    world.addObject(choice 1090, 360);
}
and to remove it:
if (choice != null)
{
    world.removeObject(choice);
    choice = null;
}
I am skeptical about whether it will behave as you want; creating an Actor from within its own class often causes some problems.
You need to login to post a reply.