Hello yet again.
I have a problem with my Sound. I want to stop the Sound is my "isGameOver= true". The thing is the OverWorld theme plays in my normal "MyWorld" and I don't know how to stop the OverWorld theme in my actor.
here is the code for "Link" and the 2nd one is for "MyWorld"
Thanks for the help in advance.
Link: public class Link extends Actor { /** * Act - do whatever Link wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ // Pictures for Links movement and sword attack. private GreenfootImage Down0 = new GreenfootImage("linkDown0.png"); private GreenfootImage Down1 = new GreenfootImage("linkDown1.png"); private GreenfootImage Left0 = new GreenfootImage("linkLeft0.png"); private GreenfootImage Left1 = new GreenfootImage("linkLeft1.png"); private GreenfootImage Right0 = new GreenfootImage("linkRight0.png"); private GreenfootImage Right1 = new GreenfootImage("linkRight1.png"); private GreenfootImage Up0 = new GreenfootImage("linkUp0.png"); private GreenfootImage Up1 = new GreenfootImage("linkUp1.png"); private GreenfootImage swordDown = new GreenfootImage("linkSwordDown.png"); private GreenfootImage swordLeft = new GreenfootImage("linkSwordLeft.png"); private GreenfootImage swordUp = new GreenfootImage("linkSwordUp.png"); private GreenfootImage swordRight = new GreenfootImage("linkSwordRight.png"); //Sounds for Link private GreenfootSound Sword = new GreenfootSound("LOZ_Sword.wav"); private GreenfootSound Die = new GreenfootSound("LOZ_Die.wav"); //Links health public static int health = 5; //Variable for Animation private static int spin = 4; //Links attack public static int dmg = 1; private boolean pressed = false; //checks if attack button got pressed public static boolean isAttacking = false; public static boolean isGameOver = false; public static boolean isKnockback = false; public void act() { keyMove(); attack(); wall(); //Checks if Link has ran out of hearts --> Leading to GameOver if(isGameOver = true){ Die.play(); Die.setVolume(75); setImage("linkDown0.png"); Greenfoot.delay(spin); setImage("linkLeft0.png"); Greenfoot.delay(spin); setImage("linkUp0.png"); Greenfoot.delay(spin); setImage("linkRight0.png"); Greenfoot.delay(spin); setImage("linkDown0.png"); Greenfoot.delay(spin); setImage("linkLeft0.png"); Greenfoot.delay(spin); setImage("linkUp0.png"); Greenfoot.delay(spin); setImage("linkRight0.png"); Greenfoot.delay(spin); setImage("linkDown0.png"); Greenfoot.delay(spin); setImage("linkLeft0.png"); Greenfoot.delay(spin); setImage("linkUp0.png"); Greenfoot.delay(spin); setImage("linkRight0.png"); Greenfoot.delay(spin); setImage("linkDown0.png"); setImage("deadLink.png"); //move(Direction.DOWN, 500); this.getImage().setTransparency(0); Greenfoot.setWorld(new GameOverScreen()); } } public void keyMove() { if(Greenfoot.isKeyDown("Right")){ setLocation(getX()+5, getY()); if (getImage() == Right0) { setImage (Right1); } else { setImage(Right0); } } if(Greenfoot.isKeyDown("Left")){ setLocation(getX()-5, getY()); if (getImage() == Left0) { setImage (Left1); } else { setImage(Left0); } } if(Greenfoot.isKeyDown("Up")){ setLocation(getX(), getY()-5); if (getImage() == Up0) { setImage (Up1); } else { setImage(Up0); } } if(Greenfoot.isKeyDown("Down")){ setLocation(getX(), getY()+5); if (getImage() == Down0) { setImage (Down1); } else { setImage(Down0); } } } public boolean canSee(Class clss) { Actor actor = getOneObjectAtOffset(0, 0, clss); return actor != null; } public void wall() { if(canSee(Wall.class) || canSee(Tree.class)) { if(getImage() == Right0 || getImage() == Right1 || getImage() == swordRight) { setLocation(getX() - 5 , getY()); } if(getImage() == Left0 || getImage() == Left1 || getImage() == swordLeft) { setLocation(getX() + 5, getY()); } if(getImage() == Up0 || getImage() == Up1 || getImage() == swordUp) { setLocation(getX() , getY() + 5); } if(getImage() == Down0 || getImage() == Down1 || getImage() == swordDown) { setLocation(getX(), getY() - 5); } } } public void attack() { if(Greenfoot.isKeyDown ("space")){ if(!pressed) { if (getImage() == Right0 || getImage() == Right1) { setImage(swordRight); } else { if (getImage() == Left0 || getImage() == Left1) { setImage (swordLeft); } if (getImage() == Up0 || getImage() == Up1) { setImage (swordUp); } if (getImage() == Down0 || getImage() == Down1) { setImage (swordDown); } } Octorock enemy = (Octorock) getOneIntersectingObject(Octorock.class); if (enemy != null) { enemy.takeDamage(dmg); } Sword.play(); Sword.setVolume(75); pressed = true; if (pressed = false) { if (getImage() == swordUp) { setImage (Up0); } if (getImage() == swordDown) { setImage (Down0); } if (getImage() == swordLeft) { setImage (Left0); } if (getImage() == swordRight) { setImage (Right0); } } } } } public void takeDamage(int dmg) { health -= dmg; if (health < 1) {getWorld().removeObject(this); isGameOver = true; } } public void removeHearts() { if(isTouching(Projectile.class)) { health -=dmg; if (health < 1) { isGameOver = true; } } } } MyWorld: public class MyWorld extends World { public int abstand = 120; GreenfootSound OverWorld = new GreenfootSound("Overworld.mp3"); /** * Constructor for objects of class MyWorld. * */ public MyWorld() { // Create a new world with 800x600 cells with a cell size of 1x1 pixels. super(800, 600, 1); setBackground(new GreenfootImage("background.png")); Link link = new Link(); addObject (link, 400, 300); Octorock Octo = new Octorock(); addObject (Octo, 100, 100); Octorock Octo2 = new Octorock(); addObject (Octo2, 400, 200); Octorock Octo3 = new Octorock(); addObject (Octo3, 600, 500); health Heart = new health(); addObject (Heart, 770,30); health Heart1 = new health(); addObject (Heart1, 750, 30); health Heart2 = new health(); addObject (Heart2, 730, 30); health Heart3 = new health(); addObject (Heart3, 710, 30); health Heart4 = new health(); addObject (Heart4, 690, 30); for(int i=1;i<6;i++){ Wall Wall_i = new Wall(); addObject (Wall_i,737 - abstand, 537 - abstand); } Wall Wall_i = new Wall(); addObject (Wall_i, 737,537); /* For inserting the UI Bar. */ /* Bar UIBar = new Bar(); addObject (UIBar,400,20); */ Life Life = new Life(); addObject (Life,732,15); OverWorld.play(); OverWorld.setVolume(25); setPaintOrder (health.class, Life.class, Bar.class,Link.class, Wall.class,Tree.class); } }