在参考资料中,他们说:“建议将图像大小设为 16x16 或 32x32 像素”以用作光标。你可以通过调用 resize 来做到这一点:
img2 = loadImage("blackgun.png");
img2.resize(32,32);
这些行也没有意义:
if (mouseX < 50) {
    cursor(img2);
  } else {
    cursor(img2);
  }
无论哪种方式,您最终都会得到与光标图像相同的 img2 。
你可以使用:
image(img, mouseX, mouseY);
但光标将在图像上。
这是一个简单而糟糕的拖动......我在这里有一个更好的拖放的旧示例,它使用 rects() 而不是图像,但想法是相同的,您可以轻松地将其调整为使用图像:
DragMe[] drags = new DragMe[40];
void setup() {
  size(400, 400);
  for (int i = 0; i < drags.length; i++) {
    drags[i]  = new DragMe();
  }
}
void draw() {
  background(255);
  for (int i = 0; i < drags.length; i++) {
    drags[i].display();
    drags[i].update();
  }
}
void mousePressed() {
  for (int i = 0; i < drags.length; i++) {
    if (!drags[i].isOver())
      drags[i].dontMove = true;
    drags[i].offset_x = mouseX - drags[i].pos_x;
    drags[i].offset_y = mouseY - drags[i].pos_y;
  }
}
void mouseReleased() {
  for (int i = 0; i < drags.length; i++) {
    drags[i].locked = false;
    drags[i].dontMove = false;
  }
}
class DragMe {
  float pos_x, pos_y, SIZE = 20;
  float prev_x, prev_y;
  boolean locked;
  boolean dontMove;
  color c = color (0, 170, 170);
  float offset_x, offset_y;
  DragMe() {
    pos_x = random(width-SIZE);
    pos_y = random(height-SIZE);
  }
  void update() {
    if (isOver() && !locked && !dontMove || locked && !dontMove )
      c = color (170);
    else
      c = color (0, 170, 170);
    if (isClicked()) {
      locked = true;
    }
    if (locked && !dontMove) {
      pos_x =  mouseX - offset_x;
      pos_y =  mouseY - offset_y;
    }
  }
  void display() {
    fill(c);
    rect(pos_x, pos_y, SIZE, SIZE);
  }
  boolean isOver() {
    float right_x = pos_x + SIZE;
    float bottom_y = pos_y + SIZE;
    return mouseX >= pos_x && mouseX <= right_x &&
      mouseY >= pos_y && mouseY <= bottom_y;
  }
  boolean isClicked() {
    return isOver() && mousePressed && !dontMove;
  }
}