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

14 hours ago

Sound Error Whenever Greenfoot.ask() is Answered

preheatto360 preheatto360

14 hours ago

#
In my scenario, there is a title screen world that plays sound when it is initialized, and has a button to go to a cutscene world. Both are subclasses of the foodtruck class. The cutscene world stops the sound then runs an ask prompt for the player's username. Whenever I run the scenario, input something in the prompt, and reset to enter the title world again, the sound there becomes really glitchy and gives me a weird error:
Exception in thread "SoundStream:file:/C:/Users/John%20Doe/OneDrive/Summative/sounds/foodtrucktitle.mp3" java.lang.IndexOutOfBoundsException
	at java.base/java.io.PushbackInputStream.read(PushbackInputStream.java:166)
	at javazoom.jl.decoder.Bitstream.readBytes(Bitstream.java:639)
	at javazoom.jl.decoder.Bitstream.syncHeader(Bitstream.java:428)
	at javazoom.jl.decoder.Header.read_header(Header.java:122)
	at javazoom.jl.decoder.Bitstream.nextFrame(Bitstream.java:328)
	at javazoom.jl.decoder.Bitstream.readNextFrame(Bitstream.java:315)
	at javazoom.jl.decoder.Bitstream.readFrame(Bitstream.java:286)
	at greenfoot.sound.Mp3AudioInputStream.read(Mp3AudioInputStream.java:221)
	at greenfoot.sound.SoundStream.run(SoundStream.java:303)
	at java.base/java.lang.Thread.run(Thread.java:833)
Foodtruck class:
public class FoodTruck extends World
{
    private static String question; //stores player name
    boolean isAsked; //name ask condition
    SimpleTimer timer = new SimpleTimer(); //timer object
    boolean timerRunning; // timer start condition
    private static int day; //game days
    static GreenfootSound title = new GreenfootSound("foodtrucktitle.mp3");
    static GreenfootSound daystart = new GreenfootSound("daystart.mp3");
    static GreenfootSound order = new GreenfootSound("truckorder.mp3");
}
Title class:
public class FoodTruckStart extends FoodTruck
{
    /**
     * Constructor for objects of class FoodTruckStart.
     * 
     */
    public FoodTruckStart()
    {
        addObject(new FoodTruckPlay(), 100, 200);
        addObject(new FoodTruckSet(), 200, 200);
        addObject(new back(), 300, 200);
        title.playLoop();
    }
}
cutscene class:
public class FoodTruckCutscene extends FoodTruck
{
    /**
     * Constructor for objects of class FoodTruckCutscene.
     * 
     */
    public FoodTruckCutscene()
    {
        addObject(new skipcutscene(), 550, 350);
    }
    public void act()
    {
        title.stop();
        if (!isAsked)
        {
            setQuestion(Greenfoot.ask("Enter your name:"));
            isAsked = true;
        }
        if (isAsked)
        {
            if (!timerRunning)
            {
                timer.mark();
                timerRunning = true;
            }
            if (timerRunning && timer.millisElapsed() > 1000 && timer.millisElapsed() < 4000)
            {
                setBackground("concept1.png");
                //cutscene sequence. will do later
            }
            else if (timerRunning && timer.millisElapsed() > 4000)
            {
                Greenfoot.setWorld(new FoodTruckDay());
            }
        }
    }
}
The error doesn't happen if I don't input something in the prompt beforehand, so I think it has something to do with that. Any help would be really appreciated!!
You need to login to post a reply.