I'm trying to play a sound if the sound isn't playing so they don't sound overlapped. Here's my code:
But it keeps saying:
java.lang.IllegalArgumentException: Could not open sound file: greenfoot.GreenfootSound@1157edf file: break.mp3 . Is playing: false
at greenfoot.sound.SoundExceptionHandler.handleIOException(SoundExceptionHandler.java:66)
at greenfoot.sound.SoundFactory.createSound(SoundFactory.java:115)
at greenfoot.sound.SoundFactory.getCachedSound(SoundFactory.java:130)
at greenfoot.Greenfoot.playSound(Greenfoot.java:163)
at Asteroids.split(Asteroids.java:67)
at Asteroids.check_hit(Asteroids.java:48)
at Asteroids.act(Asteroids.java:34)
at greenfoot.core.Simulation.actActor(Simulation.java:507)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:470)
at greenfoot.core.Simulation.runContent(Simulation.java:204)
at greenfoot.core.Simulation.run(Simulation.java:194)
Caused by: java.io.FileNotFoundException: Could not find file: greenfoot.GreenfootSound@1157edf file: break.mp3 . Is playing: false
at greenfoot.util.GreenfootUtil.getURL(GreenfootUtil.java:532)
at greenfoot.sound.SoundFactory.createSound(SoundFactory.java:95)
... 9 more
Help!
public class Asteroids extends Objects {
private int move, size, turn;
public static boolean blow_up = false;
static int luck = 10;
GreenfootSound split = new GreenfootSound("break.mp3");
public Asteroids(int size, int move, int direction, int rotation) {
setRotation(direction);
this.move = move;
this.size = size;
this.turn = turn;
GreenfootImage image = getImage();
image.scale(size, size);
image.rotate(rotation);
setImage(image);
}
public void act() {
if(Space.start) {
if(Greenfoot.isKeyDown("left")) setLocation(getX() + Space.speed, getY());
else if(Greenfoot.isKeyDown("right")) setLocation(getX() - Space.speed, getY());
}
if(Space.start) move(move);
if(Space.shake) move(Space.move);
check_hit();
}
private void check_hit() {
if(size < 5 || getY() > getWorld().getHeight() - 10) {
getWorld().removeObject(this);
return;
}
Actor bullet = getOneIntersectingObject(Bullet.class);
Actor ship = getOneIntersectingObject(Ship.class);
Actor laser = getOneIntersectingObject(Laser.class);
if(bullet!=null) {
if(Greenfoot.getRandomNumber(100) < luck && size < 15) getWorld().addObject(new Bonus(Greenfoot.getRandomNumber(2) + 1), getX(), getY());
Ship.score += size/10;
split();
return;
}
else if(laser!=null && Laser.transparency > 250) {
Ship.score += size/2;
split();
return;
}
else if(ship!=null) {
Ship.health -= 2; //subtracts health
Stat.show = true;
split();
return;
}
if(blow_up) {split(); return;}
if(getX() < 2 || getX() > getWorld().getWidth() - 2) {getWorld().removeObject(this); return;}
}
private void split() {
if(split.isPlaying()) Greenfoot.playSound("" + split);
getWorld().addObject(new Asteroids(size/2, Greenfoot.getRandomNumber(3) + 1, Greenfoot.getRandomNumber(45) + 45, Greenfoot.getRandomNumber(360)), getX(), getY());
getWorld().addObject(new Asteroids(size/2, Greenfoot.getRandomNumber(3) + 1, Greenfoot.getRandomNumber(45) + 45, Greenfoot.getRandomNumber(360)), getX(), getY());
blow_up = false;
getWorld().removeObject(this);
}
}
