我正在制作一个有10个级别的琐事测验应用程序,如果之前级别的分数为4或更高,则每个级别都会解锁。现在,如果我使用此代码(使用共享首选项存储游戏数据),它就可以正常工作了!
button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
SharedPreferences pref2 = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
int score2 = pref2.getInt("score2",0); //score2 is the score of previous level
if(score2 >= 4)
{
startActivity(new Intent(Lyricswho.this,Lylevel3.class));
}
else{ Toast.makeText(getApplicationContext(), "Level Locked", Toast.LENGTH_SHORT).show();}
}
});
然而,我试图实现像我在按钮上设置锁定图像imageview的东西,我希望它在得分> = 4时消失/删除。我面临的问题是我不能把它放在setOnClickListener函数中,因为当Level1的分数大于等于4时,如果按下“Level2”按钮,它就会起作用,imageview应该变为null 。所以我试着把它放在按钮点击funtcion之外,但它不起作用。它仅在我重新开始游戏时起作用,例如我用socre> = 4完成了level1,当我回到选择level2时它仍然被锁定!当我重新开始游戏时,关卡会被解锁。请帮帮我!这是代码
SharedPreferences pref2 = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
final int score2 = pref2.getInt("score2",0);
if(score2 >= 4)
{
imageview.setImageDrawable(null);
button.getBackground().setAlpha(45);
}
button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
if(score2 >= 4)
{
startActivity(new Intent(Lyricswho.this,Lylevel3.class));
}
else{ Toast.makeText(getApplicationContext(), "Level Locked", Toast.LENGTH_SHORT).show();}
}
});
答案 0 :(得分:0)
根据你的描述,听起来好像你需要一个线程在得分增加后进行更新。每当游戏代码中出现任何分数增加后,您都希望在分数上调用您的支票。此检查将删除阻止图像并允许您继续。
我相信情况就是这样,因为你说该项目的工作原理是你打算重新加载游戏。由于首选项将保留在那里直到它们被清除,因此您实际上是在重新加载代码后分数增加。您需要做的就是自然地将此检查写入您的代码。