Так что я сейчас работаю над игрой на Java с помощью LibGDX. Недавно я столкнулся с проблемой, когда попытался сделать класс Builder для другого класса, который будет иметь множество параметров, поэтому я догадался, что ему нужен класс Builder. Будучи уверенным Java-программистом, я начал, и я нашел проблему, которую я не могу исправить. Я уже просмотрел его в Интернете и нашел несколько примеров, но все кажется мне хорошо. Может быть, вы можете помочь. Код необходимо:Builder шаблон не работает
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
О, мой Бог. Теперь я так глуп. Я застрял на этом полчаса. Я приму ваш ответ как можно скорее. Спасибо :) –
@ DanielZsemberi, пожалуйста. Из личного опыта я знаю, что иногда возникает тривиальная ошибка, которую вы просто не видите. :) –
Да, именно поэтому мне лично нравится работать в группе. Еще раз спасибо. –