Android没有主循环,但我在打砖块游戏测试中有一个球,它需要每100毫秒改变一次位置。
我尝试使用 MainThread 库,但仍然无法正常工作。
如果我有任何可能的方法来覆盖该功能onRunning()
并将其用于检查屏幕是否被触摸并移动球会很棒。
但是考虑到我无法更改onRunning()
函数,我可以做些什么来添加一个将我的球移动到主游戏循环的函数?
您可以创建另一个线程,它将与您的 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) { }
请注意,这不是最优雅的解决方案,您应该创建一个类来处理一个线程上的游戏逻辑和另一个线程上的绘图。
此外,当您的活动暂停时,您应该暂停逻辑游戏和绘图。
据我所知,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 测量和正确的睡眠时间值
您只需根据需要创建胎面并重新绘制。
这是一个例子:http: //jmsliu.com/199/android-canvas-example.html
对于基本动画,您不需要使用任何库。但是,如果您想开发游戏,则应考虑使用游戏引擎。