Java 在这个马里奥克隆中,开发人员如何从精灵图标中隐藏不需要的颜色?

Java 在这个马里奥克隆中,开发人员如何从精灵图标中隐藏不需要的颜色?,java,swing,Java,Swing,我试图用Java编写一个Mario 3 1级克隆,我的灵感来自于Łukasz Jakowski的SMB 1克隆。您可以在上找到源代码;我克隆了他的回购协议并查看了一遍,注意到马里奥精灵实际上是粉红色的盒子,里面有马里奥,但从来没有这样的粉红色出现过 这是我的密码: public class Mario{ //all numbers multiplied by 2 from OG game protected MarioState state; protected int x, y;

我试图用Java编写一个Mario 3 1级克隆,我的灵感来自于Łukasz Jakowski的SMB 1克隆。您可以在上找到源代码;我克隆了他的回购协议并查看了一遍,注意到马里奥精灵实际上是粉红色的盒子,里面有马里奥,但从来没有这样的粉红色出现过

这是我的密码:

public class Mario{
//all numbers multiplied by 2 from OG game
  protected MarioState state;
  protected int x, y;
  protected BufferedImage sprite;


  public Mario(){
    this.state = MarioState.SMALL;
    this.x = 54;
    this.y = 806;
    URL spriteAtLoc = getClass().getResource("sprites/Mario/SmallStandFaceRight.bmp");

    try{
      sprite = ImageIO.read(spriteAtLoc);

    } catch(IOException e){
      System.out.println("sprite not found");
      e.printStackTrace();
    }
  }
...
  public void draw(Graphics g){
    g.drawImage(sprite, this.x, this.y, null);
  }
然后在我的MarioComponent课程中,我这样画颜料:

  public void paintComponent(Graphics g){
    marioSprite.draw(g);
  }

如何让我的程序像Jakowski那样省略OG sprite中的颜色?我知道他的是C++和我的java语言,我制作所有的瓦片对象而不是整个级别的文件(IDK,如果这是一个好主意),但我最终打算通过让屏幕上的物体成为一个对象来完成这个任务。如果你仍然想使用BMP,你需要过滤掉粉红色,可能需要将主图像的像素复制到透明版本。它们都是位图图像;对于调试,我想拥有所有的方块/方块是不错的,但对于玩来说,就不那么多了。Java中是否有一种简单、快速的方法来过滤掉粉色?将像素数据复制到一个透明的图像中,过滤掉粉色-仔细查看
buffereImage
类,但这会在我的程序文件夹中创建更多文件吗?这不像每次玩Jakowski的游戏时,都会有比以前更多的文件。不,你只需要在内存中这样做——但是,正如我所说,我会花时间将图像转换为透明PNG,然后从一开始就使用它们