问题描述
我有两个与Android游戏循环相关的问题。
是否有一种方法可以以相同的速度在不同的设备/屏幕尺寸中从左向右移动游戏图形或。
有没有一种方法可以正确地将帧之间的正确经过时间(增量)传播到Sprite,因此我们可以在30秒后隐藏Sprite。目前,我传递给sprite.update
方法的增量还不能完美地跟踪经过的时间。我也想实现游戏暂停,因此在精灵内跟踪时间是有问题的。
我的恶意更新方法
public boolean update(float deltaTime) {
loopTime += deltaTime;
if (loopTime > 30000) {
fullAnimationDone = true;
return false;
}
mYPos -= Interpolation.circle.apply(loopTime) * mScreenHeight;
mXpos = mScreenWidth/2;
return false;
}
我的游戏循环
public void run() {
Canvas canvas;
long ticksPS = 1000 / FPS;
long startTime;
long sleepTime;
long deltaTime = 0;
long totalTime = 0;
mRunning.set(true);
while (mRunning.get()) {
startTime = System.currentTimeMillis();
if (mSurfaceHolder.getSurface().isValid()) {
sprite.update(deltaTime / 1000f);
currentLevelDuration += totalTime;
levelTimeFinished = (currentLevelDuration > levelDurationThresholdMs);
gameOver = levelTimeFinished;
}
canvas = mSurfaceHolder.lockCanvas();
canvas.save();
canvas.drawColor(0,android.graphics.PorterDuff.Mode.CLEAR);
if (gameOver) {
} else {
sprite.draw(canvas);
}
canvas.restore();
mSurfaceHolder.unlockCanvasAndPost(canvas);
deltaTime = (System.currentTimeMillis() - startTime);
sleepTime = ticksPS - deltaTime;
try {
if (gameOver) pause();
if (sleepTime > 0)
sleep(sleepTime);
else
sleep(10);
} catch (Exception e) {
}
totalTime = (System.currentTimeMillis() - startTime);
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)