带有摆动计时器的麻烦的重画游戏

时间:2019-06-11 13:36:48

标签: java swing timer repaint

这是我上一个问题的跟进。我正在用Java制作Frogger,正在尝试实现一个摆动计时器,但它似乎没有用。我在设置它时遇到了麻烦。

我尝试在代码的不同区域中实现它,但对它的问题还没有得出任何结论。我遵循了多个教程,但没有任何效果。

 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);
    }
  }

这是绘制以前使用线程的主要游戏的代码,但被告知挥杆计时器更有用。

该计时器应该重绘我的游戏,但是即使我被告知这是正确的,但似乎我什至无法正确实现它。任何帮助表示赞赏!

0 个答案:

没有答案