2015-01-30 2 views
0

Так что я сейчас работаю над игрой на 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

ответ

2

Кажется, ты просто забыла new. Вы должны создать новый экземпляр SpecialTile.SpecialTileBuilder, но вы пытаетесь вызвать метод SpecialTile.SpecialTileBuilder(...).

+0

О, мой Бог. Теперь я так глуп. Я застрял на этом полчаса. Я приму ваш ответ как можно скорее. Спасибо :) –

+0

@ DanielZsemberi, пожалуйста. Из личного опыта я знаю, что иногда возникает тривиальная ошибка, которую вы просто не видите. :) –

+0

Да, именно поэтому мне лично нравится работать в группе. Еще раз спасибо. –

Смежные вопросы