所以我目前正在利用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();
所以它在日食中说我遇到了这个问题:
方法SpecialTileBuilder(String)未定义类型 SpecialTile
答案 0 :(得分:2)
好像你忘记了new
。您应该创建一个新的SpecialTile.SpecialTileBuilder
实例,但是您尝试调用SpecialTile.SpecialTileBuilder(...)
方法。