Hello I have a little problem, I'm using this method http://www.greenfoot.org/scenarios/243 to make the background scroll and I don't know how to change the background that is being scrolled without making a new world. How can I do that?
import greenfoot.*; // (World, Actor, GreenfootImage, and Greenfoot)
public class ScrollWorld extends World
{
private static GreenfootImage bgImage1 = new GreenfootImage("space1.gif");
private static GreenfootImage bgImage2 = new GreenfootImage("fond-vert1.jpg");
private static GreenfootImage bgImage = new GreenfootImage("space1.gif");
private static final int scrollSpeed = 1;
private GreenfootImage scrollingImage;
private int scrollPosition = 0;
private int currentLevel = 1;
public ScrollWorld()
{
super(800, 400, 1);
GreenfootImage background = new GreenfootImage(800, 400);
scrollingImage = getScrollingImage(800, 400);
background.drawImage(scrollingImage, 0, 0);
setBackground(background);
addObject(new SpaceShip(), 350, 200);
}
public void act()
{
if(scrollSpeed > 0 && scrollPosition <= 0) {
scrollPosition = getWidth();
}
if(scrollSpeed < 0 && scrollPosition >= getWidth()) {
scrollPosition = 0;
}
scrollPosition -= scrollSpeed;
paint(scrollPosition);
if (checkForNextLevel() == true)
{
currentLevel = 2;
addObject(new SpaceShip(), 350, 200);
}
}
public boolean checkForNextLevel()
{
int numberOfSpaceShip = getObjects(SpaceShip.class ).size();
if (numberOfSpaceShip == 0)
{
return true;
}
else
{
return false;
}
}
/**
* Paint scrolling image at given position and make sure the rest of
* the background is also painted with the same image.
*/
private void paint(int position)
{
GreenfootImage bg = getBackground();
bg.drawImage(scrollingImage, position, 0);
bg.drawImage(scrollingImage, position - scrollingImage.getWidth(), 0);
}
/**
* Returns an image with the given dimensions.
*/
private GreenfootImage getScrollingImage(int width, int height)
{
if (currentLevel == 2)
{
bgImage = bgImage2;
}
GreenfootImage image = new GreenfootImage(width, height);
for(int x = 0; x < width; x += bgImage.getWidth()) {
for(int y = 0; y < height; y += bgImage.getHeight()) {
image.drawImage(bgImage, x, y);
}
}
return image;
}
}