程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 框架-java問題,為什麼畫出的小球不能動

框架-java問題,為什麼畫出的小球不能動

編輯:編程解疑
java問題,為什麼畫出的小球不能動

import java.awt.*;
public class New01
{
public New01()//定義主類DrawFrame
{
Frame f=new Frame("my app");//建立框架
GamePanel mp=new GamePanel();//建立繪圖容器
f.setLocation(300,200);
f.setSize(300,300);
f.add(mp);//將GamePanel對象添加到Frame對象中去
f.setVisible(true);
}

public static void main(String[] args)
{
    new New01();//實例化
    //GamePanel.gameLoop();
}

}

class GamePanel extends Panel
{
private int x;//該變量表示小球左上角的橫坐標
private int y;//該變量表示小球左上角的縱坐標
private int diameter;//該變量表示小球的直徑

public GamePanel()//構造函數,初始化各個變量
{
    x=50;
    y=50;
    diameter=100;

}

public void paint(Graphics g)
{
    g.setColor(Color.BLUE);//設置畫筆顏色為藍色
    g.fillOval(x,y,diameter,diameter);//調用畫圓的方法繪制小球
}

public void gameLoop()//該方法用來動態改變小球的坐標,並對小球進行重繪
{
    while(true)
    {
        x++;
        for(int i=1;i<10000000;i++)
        {}
        repaint();
    }
}

}

最佳回答:


java問題,為什麼畫出的小球不能動

那是因為你設置的坐標變化的方法gameLoop沒有被調用啊

小球動的原理是:
設置一個初期坐標
然後改變小球的坐標(可以使用一些函數了)
然後通過調用repaint()方法來間接調用這個paint(Graphics g)方法

你的代碼做如下改動:
gameLoop()方法內部:
GamePanel中增加如下代碼:
在x++下面
** if (x > 600) {
x = 50;
}**

    把那個for(int i=1;i<10000000;i++)循環去掉
    改成      try {
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }

New01中
要進行這個gameLoop方法的調用
在方法public New01()的最後一行添加如下代碼:
try {
Thread.sleep(3000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
mp.gameLoop();

改動之後球就可以動了
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved