Have created a mp3 player, created the volume bar, can't seem to get the volume bar to change when I click volume up or down. Any help is appreciated.
I thought putting mouseClicked(VolumeUp.class) in VolumeBar would do the trick, but no. Where am I going wrong?
Thanks,
Matt
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;
/**
* Write a description of class MyWorld here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class MyWorld extends World
{
private GreenfootSound song = new GreenfootSound("song1.mp3");
private Play play = new Play();
private VolumeUp volumeup = new VolumeUp();
private VolumeDown volumedown = new VolumeDown();
private int volumeLevel = 50;
private GreenfootImage volume = new GreenfootImage (80, 20);
private VolumeBar volumeBar = new VolumeBar();
/**
* Constructor for objects of class MyWorld.
*
*/
public MyWorld()
{
// Create a new world with 600x400 cells with a cell size of 1x1 pixels.
super(400, 300, 1);
prepare();
}
public GreenfootImage getVolume(){
return volume;
}
public void setVolume(GreenfootImage volume){
this.volume=volume;
}
public VolumeBar getVolumeBar(){
return volumeBar;
}
public int getVolumeLevel(){
return volumeLevel;
}
public void setVolumeLevel(int volumeLevel){
this.volumeLevel = volumeLevel;
}
public Play getPlay()
{
return play;
}
public VolumeUp getVolumeUp(){
return volumeup;
}
public VolumeDown getVolumeDown(){
return volumedown;
}
public GreenfootSound getSong()
{
return song;
}
public void setSong(String filename){
song.stop();
song.play();
}
/**
* Prepare the world for the start of the program.
* That is: create the initial objects and add them to the world.
*/
private void prepare()
{
addObject(play,53,60);
addObject(volumeup,305,73);
addObject(volumedown,305,146);
addObject(volumeBar,126,237);
}
}import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;
/**
* Write a description of class VolumeBar here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class VolumeBar extends Volume
{
private GreenfootImage bar = new GreenfootImage(100,10);
private int audioLevel = 20;
public VolumeBar(){
bar.drawRect(0,0,99,9);
bar.setColor( Color.YELLOW);
bar.fillRect(1,1,audioLevel+2,9);
setImage(bar);
}
public void setAudioLevel(int audioLevel){
this.audioLevel = audioLevel;
}
public void changeVolume(int points){
MyWorld world = new MyWorld();
audioLevel = world.getVolumeLevel();
GreenfootImage bar = getImage();
bar.clear();
bar.setColor(Color.BLACK);
bar.drawRect(0,0,99,9);
bar.setColor(Color.YELLOW);
audioLevel += points;
bar.fillRect(1,1,audioLevel+5,9);
}
/**
* Act - do whatever the VolumeBar wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
if (Greenfoot.mouseClicked(VolumeUp.class)){
changeVolume(audioLevel);
}
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.awt.Color;
/**
* Write a description of class VolumeUp here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class VolumeUp extends Volume
{
private int volume = 0;
/**
* Act - do whatever the VolumeUp wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
MyWorld myworld = new MyWorld();
volume = myworld.getVolumeLevel();
if (Greenfoot.mouseClicked(this)){
MyWorld myWorld = (MyWorld)this.getWorld();
GreenfootSound mySong = myWorld.getSong();
myworld.setVolumeLevel(1000);
mySong.setVolume(volume += 10);
VolumeBar volume = new VolumeBar();
volume.changeVolume(500);
}
}
}
