Проблемы с перекрашиванием игры с таймером свинга - PullRequest
0 голосов
/ 11 июня 2019

Это продолжение моего предыдущего вопроса.Я делаю Frogger на Java, я пытаюсь реализовать таймер колебания, но, похоже, он не работает.У меня возникли некоторые проблемы при настройке.

Я пытался реализовать его в различных областях моего кода и не пришел к выводу, что с ним не так.Я следовал нескольким учебникам, и ничего не помогло.

 private int delay = 7;

  public CPT() {
    setLayout(new BorderLayout());
    label = new JLabel("Frogger");
    frame1 = new JFrame("Main");
    label.setFont(new Font("Serif", Font.BOLD,50));
    label.setBounds(275,10,250,250);
    button1 = new JButton("PLAY");
    button1.setBounds(300,350,100,50);
    button1.setOpaque(false);
    button1.setVisible(true);
    this.setOpaque(false);
    this.setLayout(null);
    this.add(label);
    button1.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent e){
        frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame1.setVisible(true);
        frame1.setSize(700,500);
        frame1.setResizable(false);
        button1.setVisible(false);
        frame1.add(new TrainCanvas());
        frame1.add(p1);
        frame1.addKeyListener(new frog());
      } 
    });
    this.add(button1);
  }

Это основной конструктор моего класса

  class TrainCanvas extends JComponent {

    private int lastX = 0;
    private int lastX_1 = 0;
    private int lastX_2 = 0;


   public TrainCanvas() {
//      Thread animationThread = new Thread(new Runnable() {
//        public void run() {
//          while (true) {
//            repaint();
//            try {Thread.sleep(10);} catch (Exception ex) {}
//          }
//        }
//      });
//      
//      animationThread.start();
//    }
     Timer time = new Timer(delay, this {
          TrainCanvas.repaint();
    });

    time.start();
   }

    public void paintComponent(Graphics g) {
      Graphics2D gg = (Graphics2D) g;

      int w = getWidth();
      int h = getHeight();

      int trainW_1 = 100;
      int trainH_1 = 5;
      int trainSpeed_1 = 3;

      int x = lastX + trainSpeed_1;

      if (x > w + trainW_1) {
        x = -trainW_1;
      }

      gg.setColor(Color.BLACK);
      gg.fillRect(x, h/2 + trainH_1, trainW_1, trainH_1);

      lastX = x;

  //Draw Frog
      frog = new Rectangle(f_x,f_y,25,25);
      g3.fill(frog);
      g3.setColor(Color.GREEN);
    }
  }

Это код, который рисует основную игру, в которой я ранее использовал поток, номне сказали, что таймер свинга более полезен.

Таймер должен перекрасить мою игру, но кажется, что я даже не могу реализовать ее должным образом, хотя мне сказали, что это правильно.Любая помощь приветствуется!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...