public void mouseTouched(Actor actor, GGMouse mouse, Point spot) { switch (mouse.getEvent()) { case GGMouse.lPress: startLocation = toLocation(mouse.getX(), mouse.getY()); actor.setOnTop(); hotSpot = spot; break; case GGMouse.lDrag: Point imageCenter = new Point(mouse.getX() - hotSpot.x, mouse.getY() - hotSpot.y); actor.setPixelLocation(imageCenter); refresh(); break; case GGMouse.lRelease: if (spot.x == -1) // Cursor is outside image actor.setLocation(startLocation); else { actor.setPixelLocation(new Point(mouse.getX(), mouse.getY())); nbMoves++; if (isOver()) setStatusText("Total #: " + nbMoves + ". Done."); else setStatusText("#: " + nbMoves); } actor.setLocationOffset(new Point(0, 0)); hotSpot = null; refresh(); break; } }