Hi all. My code seems to be working fine except for line 26 of the VolumeBar class. Whenever I actually click VolumeUp, the if loop in line 26 does not execute. I don't know why; it's probably pretty simple, but I'm missing it.
Also, for our homework it is required that refreshVolumeBar() only execute when one of the volume buttons is pressed, it cannot just be spammed in the act method.
Here is VolumeBar class:
and here is VolumeDown class:
and here's VolumeUp class:
Any help is appreciated ;)
Also, how would one execute refreshVolumeBar() from within another subclass, like VolumeDown or VolumeUp, because I think that might be a better approach to this?
// VolumeBar class import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) public class VolumeBar extends Actor { //MyWorld world = ((MyWorld)getWorld()); private GreenfootImage bar = new GreenfootImage(130, 15); private int volume = 50; VolumeBar() { bar.drawRect(0, 0, 175, 20); bar.setColor(Color.BLACK); bar.fillRect(1, 1, 200, 19); bar.setColor(Color.GRAY); bar.fillRect(6, 6, 100, 4); bar.setColor(Color.CYAN); bar.fillRect(6, 6, volume, 4); setImage(bar); } public void act() { if ((Greenfoot.mouseClicked(VolumeUp.class))) { refreshVolumeBar(); } } public void refreshVolumeBar() { MyWorld world = ((MyWorld)getWorld()); volume = world.getVolume(); bar.clear(); bar.drawRect(0, 0, 175, 20); bar.setColor(Color.BLACK); bar.fillRect(1, 1, 200, 19); bar.setColor(Color.GRAY); bar.fillRect(6, 6, 100, 4); bar.setColor(Color.CYAN); bar.fillRect(6, 6, volume, 4); System.out.println("Volume Bar Refreshed; new volume: " + volume); } }
// VolumeDown class import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) public class VolumeDown extends Actor { VolumeDown() { setImage("image_button_volumeDown.png"); } public void act() { changeVolume(); } public void changeVolume() { MyWorld world = ((MyWorld)getWorld()); if ((Greenfoot.mouseClicked(this)) && (world.getVolume() > 0)) { System.out.println("changeVolume (down)"); world.adjustVolume(-2); } } }
// VolumeUp class import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) public class VolumeUp extends Actor { VolumeUp() { setImage("image_button_volumeUp.png"); } public void act() { changeVolume(); } public void changeVolume() { MyWorld world = ((MyWorld)getWorld()); if ((Greenfoot.mouseClicked(this)) && (world.getVolume() < 100)) { System.out.println("changeVolume (up)"); world.adjustVolume(2); } } }