我正在为Android编写一个游戏,我认为我的架构和/或代码中有一个致命的缺陷。
该体系结构基本上是两个线程,一个线程只是连续地绘制屏幕,另一个线程则根据用户的触摸屏输入控制屏幕上可绘图的移动。
在后一个线程中,我基本上是做手动动画(在这里插入正确的术语),这意味着我通过在游戏进行过程中更改drawablerect的方法移动屏幕上的drawables。“不,不”,我认为我正在做的是在这些方法中插入延迟,以便它“看起来像一个实际的动画”。
这一切都很好和花哨,因为我没有理由在这些动画过程中处理任何用户输入,但这真的让我恼火,我正在设计一个缺陷,使我的许多努力工作与我的游戏。我相信你们中的许多人都能从代码设计的角度来理解这一点。
设计这种“手动动画”的正确方法是什么?这样,当动画发生时,我的代码仍然可以处理用户事件(如触摸屏幕)?
以下是我的一个方法的参考示例:
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();
}
}
}