我尝试使用SharedPreferences来存储我的高分。每当我的关卡结束时,它会通过发送高分和上下文来调用此类。
要计算得分的位置,我会根据共享首选项中的得分(总计6)检查得分
我的问题,当我有一个高分时,(nr 1.)它会自动将相同的分数复制到第二,第三,第四等等。这不是我发生的事情的逻辑。它应该首先设置变量的值,然后在我的循环中使用这些变量吗? 以下陈述仅在高分为1分时才有。其他陈述实际上是相同的。
分数课程,将从我的游戏课程中调用
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
public class Scores {
private SharedPreferences mSharedPrefs;
public void input(int i,Context a){
int first=0;
int second=0;
int third=0;
int fourth=0;
int fifth=0;
int sixth=0;
mSharedPrefs = PreferenceManager.getDefaultSharedPreferences(a);
sixth=mSharedPrefs.getInt("scoresixth",0);
fifth=mSharedPrefs.getInt("scorefifth",0);
fourth= mSharedPrefs.getInt("scorefourth",0);
third=mSharedPrefs.getInt("scorethird",0);
second=mSharedPrefs.getInt("scoresecond",0);
first = mSharedPrefs.getInt("scorefirst",0);
if (i>=first){
SharedPreferences.Editor editor = mSharedPrefs.edit();
editor.putInt("scoresixth",fifth);
editor.putInt("scorefifth",fourth);
editor.putInt("scorefourth",5);
editor.putInt("scorethird",second);
editor.putInt("scoresecond",first);
editor.putInt("scorefirst",i);
editor.commit();
}
}
现在我的游戏课程中我称之为分数:
public class LevelOne extends GLGame {
public Screen getStartScreen() {
return new GameScreen(this);
}
class GameScreen extends Screen {
Scores scorein=new Scores(); ...
... if(score>1499){
Assets.font.drawText(batchertwo, " WINNER!!", -200,((1-9/0.4f)/1.5f)*dim);
win=true;
scorein.input(score, getApplicationContext());
编辑:我从OpenGL屏幕调用该类。不确定这是否会影响任何
上面的问题解决了: 我将这个分数类称为OpenGL屏幕。具有OpenGL屏幕的是它不断更新屏幕,因此继续使用所有这些更新调用得分输入法。 这就是为什么我在各个位置看到我的高分。
我只需在OpenGL中创建一个布尔值,在执行一次时将其设置为false / true。无需担心其他更新。它的工作前所未有。