2010-10-03 53 views
4

我正在为Android编写游戏,并且我认为在我的体系结构和/或代码中存在致命缺陷。我如何在没有代码延迟的情况下将“手动动画”设计为Android游戏

该架构基本上是两个线程,一个只是连续绘制屏幕,​​另一个是基于用户的触摸屏输入控制屏幕上绘图的移动。

在后面的主题中,我基本上正在做手动动画(在此处插入正确的术语),这意味着我通过在游戏进行时更改Drawable Rect的方法在屏幕上移动drawable。我相信我在做的“不 - no”是在这些方法中插入延迟,以便它“看起来像一个实际的动画”。

这一切工作正常,很正常,因为我没有理由来处理这些动画过程中的任何用户输入,但它确实缠着我,我设计的一个缺陷融入了很多艰苦的工作与我的比赛。我相信你们中许多人可以在代码设计方面与此有关。

什么是设计这个“手动动画”的正确方法,所以我的代码仍然可以在动画发生时处理用户事件(如触摸屏幕)?

这里是我的方法之一的参考例子:

public void BadAnimation() {  
    for (int k = 0; k < mAnimationHeight; k++) { 
     for (int i = 0; i < mRows; i++) { 
      for (int j = 0; j < mCols; j++) { 
       if (myObject.mFlag[i][j]) { 
        myObject[i][j].mRect.top++ 
       } 
      } 
     } 
     try { 
       Thread.sleep(3); 
     } 
     catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
     } 
    } 
} 

回答

0

要做到这一点,最好的办法是你的游戏循环中。你有一个计时器,你已经运行,如果它已经过去执行你的平局,重置计时器。否则什么都不要做

相关问题