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; } }