gpt4 book ai didi

java - 构建器模式不起作用

转载 作者:行者123 更新时间:2023-12-02 05:01:32 26 4
gpt4 key购买 nike

我目前正在 LibGDX 的帮助下用 Java 开发一款游戏。最近我遇到了一个问题,当尝试为另一个类创建一个 Builder 类时,该类将有很多参数,所以我猜它需要一个 Builder 类。作为一个自信的 Java 程序员,我开始使用它并发现了一个我无法纠正的问题。我已经在互联网上查找过并找到了一些示例,但对我来说一切似乎都很好。也许你能帮忙。需要的代码:

public class SpecialTile implements MyAnimation {

/**
* Class builder for SpecialTile
* @author Zsemberi Daniel
*
*/
public static class SpecialTileBuilder {
/*
* Drawables
*/
private Sprite image;
private Animation anim;

//position
private Point position;

/**
* Sprite path constructor
*/
public SpecialTileBuilder(String imagePath) {
this.image = new Sprite((Texture) Load.manager.get(imagePath));
}

/**
* Image constructor
*/
public SpecialTileBuilder(Sprite image) {
this.image = image;
}

/**
* Animation constructor
*/
public SpecialTileBuilder(Animation anim) {
this.anim = anim;
}

//Set position
public SpecialTileBuilder setPosition(Point position) {
this.position = position;
return this;
}


public SpecialTile createSpecialTile() {
return new SpecialTile(this);
}
}

/*
* Drawables
*/
private Sprite image;
private Animation anim;

private float stateTime = 0f;

//position
private Point position;

protected SpecialTile(SpecialTileBuilder builder) {
image = builder.image;
anim = builder.anim;
position = builder.position;
}

/**
* Hits the player
*/
public boolean isHit(Sprite sprite) {
if(anim == null)
return image.getBoundingRectangle().contains(sprite.getBoundingRectangle());
else
return new Sprite(getCurrentFrame()).getBoundingRectangle().contains(sprite.getBoundingRectangle());
}

/**
* If it is triggered it does something
*/
public void doTheHarlemShake(Sprite sprite) {

}

public Sprite getSprite() { return image; }
public Animation getAnimation() { return anim; }

public float getX() { return position.x; }
public float getY() { return position.y; }

/*
* Animation stuff
*/

@Override
public TextureRegion getCurrentFrame() {
return anim.getKeyFrame(stateTime, true);
}

@Override
public void updateAnimation(float delta) {
stateTime += delta;
}

}

在那里你可以看到我编写 Buidler 的整个类(我想你可能需要它)。如果它有效的话,我将如何使用它。

SpecialTile.SpecialTileBuilder("test.png")
.setPosition(new Point(2, 2))
.createSpecialTile();

所以它在 Eclipse 中说我遇到了这个问题:

The method SpecialTileBuilder(String) is undefined for the type SpecialTile

最佳答案

看来您只是忘记了new。您应该创建一个新的 SpecialTile.SpecialTileBuilder 实例,但您正在尝试调用 SpecialTile.SpecialTileBuilder(...) 方法。

关于java - 构建器模式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28245071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com