2015-03-08 217 views
0

我对java很新。非常。就像我基本上从今天开始。我有其他语言的编程知识,如c,c + +,PHP,JavaScript等,但我无法弄清楚这一点。我开始在Youtube上观看关于如何用Java制作视频游戏的教程(来自ChernoProject的视频),但大约有7集,我遇到了一个问题,我们有我们的窗口,我们画了一个黑色的矩形,并且该应用程序冻结了我的整个计算机。这里是我的代码:Java应用程序冻结

package com.darksun.theonetruemike.rain; 

import java.awt.Canvas; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.image.BufferStrategy; 

import javax.swing.JFrame; 

public class Game extends Canvas implements Runnable{ 
    private static final long serialVersionUID = 1L; 

    public static int width = 300; 
    public static int height = width/16 * 9; 
    public static int scale = 3; 

    private Thread thread; 
    private JFrame frame; 
    private boolean running = false; 

    public Game(){ 
     Dimension size = new Dimension(width * scale, height * scale); 
     setPreferredSize(size); 

     frame = new JFrame(); 
    } 

    public synchronized void start(){ 
     running = true; 
     thread = new Thread(this, "Display"); 
     thread.start(); 
    } 

    public synchronized void stop(){ 
     running = false; 
     try{ 
      thread.join(); 
     } catch(InterruptedException e){ 
      e.printStackTrace(); 
     } 
    } 

    public void run(){ 
     while(running){ 
      update(); 
      render(); 
     } 
    } 

    public void update(){ 

    } 

    public void render(){ 
     BufferStrategy bs = getBufferStrategy(); 

     if(bs == null){ 
      createBufferStrategy(3); 
      return; 
     } 

     Graphics g = bs.getDrawGraphics(); 

     g.setColor(Color.BLACK); 
     g.fillRect(0, 0, getWidth(), getHeight()); 

     g.dispose(); 
     bs.show(); 
    } 

    public static void main(String args[]){ 
     Game game = new Game(); 
     game.frame.setResizable(false); 
     game.frame.setTitle("Rain"); 
     game.frame.add(game); 
     game.frame.pack(); 
     game.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     game.frame.setLocationRelativeTo(null); 
     game.frame.setVisible(true); 

     game.start(); 
    } 

} 

我使用Eclipse来使这个项目(高度违背我的意愿),而当我按下Debug按钮,出现的窗口,我的电脑死机,产生具有强制退出整个计算机。如果可以,请提供帮助,并提前感谢您的帮助!

+0

你怎么知道它冻结了,它似乎没有做任何事情。也。你主循环可能会超支,这可能会消耗你的CPU周期... – MadProgrammer 2015-03-08 20:36:41

+0

我知道它冻结,因为我按下关闭按钮,它需要大约5分钟无所事事,然后我不得不强制退出我的电脑 – 2015-03-08 20:38:55

+0

什么是你试图用线程来完成? – lacraig2 2015-03-08 20:49:29

回答

0

因为我有低信誉,我将发布作为回答我的意见,尽量不要-rep

我复制你的代码到NetBeans中,看起来像窗口黑色控制台,什么都不会发生,但它不冻结,但JVM正在使用CPU的50%左右

+0

是的,我想通了,这是因为我的电脑couldn'处理进程的数量。谢谢,但它帮助 – 2016-12-07 00:20:47

+0

我很高兴我可以帮助:) – Akos 2016-12-12 09:02:45