如何在Android上移动球

时间:2012-11-04 21:06:36

标签: java android

Android没有主循环,但我的arkanoid游戏测试中有一个球,它需要每隔100毫秒更换一次位置。

我尝试使用MainThread库,但它仍无效。

如果我有任何可能的方法来覆盖函数onRunning()并让它检查屏幕是否被触摸并移动球会很棒。

但考虑到我无法更改onRunning()功能,我该怎么做才能添加一个将我的球移动到主游戏循环的功能?

4 个答案:

答案 0 :(得分:1)

您可以创建另一个与Main / Gui线程

异步运行的线程
final boolean shouldRun = true;

Thread t = new Thread(){
    public void run(){
        while (shouldRun){
            //do what ever you need
            try{
                Thread.sleep(100); //sleep for 100ms
            } catch (Exception e) {

            }
         }
    }
 };

shouldRun = true;
t.start();

当你完成时

shouldRun = false;
try { 
    t.join();
} catch (Exception e) { }

请注意,这不是最优雅的解决方案,您应该创建一个类,它将在一个线程上处理游戏的逻辑,并在另一个线程上处理绘图。

此外,只要您的活动暂停,您就应该暂停逻辑游戏以及绘图。

答案 1 :(得分:0)

您只需按照自己的意愿创建一个重新绘制。

以下是一个示例:http://jmsliu.com/199/android-canvas-example.html

对于基本动画,您不需要使用任何库。但是,如果你想开发游戏,你应该考虑使用游戏引擎。

答案 2 :(得分:0)

  

据我所知,android没有主循环

谁说的?粗略的例子:

public class MainLoop extends Thread {
   boolean isRunning;

   public void terminate() {
    isRunning=false;
   }

   public void run() {
      isRunning=true;
      while (isRunning) {          
      //move ball
      try { sleep(100);
      ...

您还需要实施deltatime测量并纠正睡眠时间值

答案 3 :(得分:0)

您应该使用SurfaceView,它允许您从自己的线程在画布上绘制,您可以在其中控制渲染的频率。

您可能需要查看this post以了解有关SurfaceView用法的讨论。

此外,如果您想直接转到示例,请查看this link