How can I drag a world?
import greenfoot.*;
public class Pad extends World
{
GreenfootImage image = new GreenfootImage("fractal.png"); // the oversized image
int imgX, imgY; // holds current image offsets
int prsX, prsY; // holds where mouse button first pressed
boolean dragging; // flags dragging state
public Pad()
{
super(400, 400, 1);
setBackground(image);
}
public void act()
{
if (!dragging && Greenfoot.mousePressed(null))
{
MouseInfo mi = Greenfoot.getMouseInfo();
prsX = mi.getX();
prsY = mi.getY();
dragging = true;
}
if (dragging && Greenfoot.mouseDragged(null))
{
MouseInfo mi = Greenfoot.getMouseInfo();
updateBackground(imgX - (prsX - mi.getX()), imgY - (prsY - mi.getY()));
}
if (dragging && Greenfoot.mouseDragEnded(null))
{
MouseInfo mi = Greenfoot.getMouseInfo();
boolean bgChanged = updateBackground(imgX - (prsX - mi.getX()), imgY - (prsY - mi.getY()));
if (bgChanged)
{
imgX -= prsX - mi.getX();
imgY -= prsY - mi.getY();
}
dragging = false;
}
}
public boolean updateBackground(int x, int y)
{
if (x > 0 || x < getWidth() - image.getWidth() + 1 || y > 0 || y < getHeight() - image.getHeight() + 1)
{
updateBackground(imgX, imgY);
return false;
}
GreenfootImage bg = new GreenfootImage(getWidth(), getHeight());
bg.drawImage(image, x, y);
setBackground(bg);
return true;
}
}