1

我正在遵循一个显示如何创建 Pong 游戏的指南。有一部分,我应该创建一个线程,并调用一个移动球的函数。

这是我创建的代码:

package com.ozadari.pingpong;

public class PingPongGame extends Thread {
private Ball gameBall;
private PingPongView gameView;

public PingPongGame(Ball theBall,PingPongView mainView)
{
    this.gameBall = theBall;
    this.gameView = mainView;
}

@Override
public void run()
{
    while(true)
    {
        this.gameBall.moveBall();
        this.gameView.postInvalidate();

        try
        {
            PingPongGame.sleep(5);

        }
        catch(InterruptedException e)
        {

            e.printStackTrace();
        }

    }
}}

该线程被调用并且正在工作,但它不打印任何内容。我试图取消无限循环并使循环运行 100 次。在我等了一会儿之后,它会在运行 100 次后打印到屏幕上,但它不会在中间打印任何东西。

问题是什么?我该如何解决?

4

1 回答 1

2

从您发布的代码中不确定,但无论如何,您可以使用处理程序并让它每秒运行一次(将时间更改为您想要的时间):

Handler handler = new Handler();
final Runnable r = new Runnable()
{
    public void run() 
        {
             //do your stuff here
              handler.postDelayed(this, 1000);
        }
};

handler.postDelayed(r, 1000);

http://developer.android.com/reference/android/os/Handler.html

您也可以使用普通线程,并在最后调用 start 。

Thread thread = new Thread()
{
    @Override
    public void run() {
        try {
            while(true) {
                sleep(1000);
                handler.post(r);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
};

thread.start();
于 2013-03-21T12:39:03.933 回答