回答-赛车状况
因此,这是我正在制作的游戏中产生障碍的类,每当障碍物离开屏幕时,它都会清除障碍物并增加得分。这可以正常工作,但是预期时布尔值(plusScore)不会更改为true。
public void update() {
//
if(obstacles.get(obstacles.size() - 1).getRectangle().top >= Constants.SCREEN_HEIGHT) {
int xStart = (int)(Math.random()*(Constants.SCREEN_WIDTH - playerGap));
obstacles.add(0, new Obstacle(obstacleHeight, color, xStart, obstacles.get(0).getRectangle().top - obstacleHeight - obstacleGap, playerGap));
obstacles.remove(obstacles.size() - 1);
score += 10;
plusScore = true; //Problem here
tempTime = (int)System.currentTimeMillis();
}
if (tempTime + 5 <= System.currentTimeMillis()) {
plusScore = false; //Unsure if working as relying on above
}
}
这是我在下面调用布尔值的地方,我包括了方法的第一部分,因为我不确定是否可能发生冲突。
public void draw(Canvas canvas) {
for(Obstacle ob : obstacles)
ob.draw(canvas);
Paint paint = new Paint();
paint.setTextSize(100);
paint.setColor(Color.BLACK);
canvas.drawText(" " + score, 50, 50 + paint.descent() - paint.ascent(), paint);
if(plusScore) { //This is what the Boolean should effect
Paint paint2 = new Paint();
paint2.setTextSize(100);
paint2.setColor(Color.GREEN);
drawPlusScore(canvas, paint2, "+10!");
}
}
[仅当没有if语句时,澄清draw方法才能正常工作。]
如果问题很明显,我很抱歉,我是第一次学习教程,并决定为自己尝试一些东西。
最佳答案
我看到两种可能性:
您的系统足够慢,以至于在if
方法的第一个update()
中设置了布尔值之后,立即进入了第二个if
并将变量设置为false
(我发现这不太可能,但是如果您可能正在某种模拟器中运行?)。可能值得进行一些日志记录,以确认绘图是在将此变量设置为true和false之间进行的。plusScore
方法中的update()
变量与plusScore
方法中的draw()
变量不同。这两种方法都在同一类中吗?我可以说您的plusScore
变量是代码段中的一个字段,但是如果这两个代码段不在同一类中,则您正在处理两个完全独立的变量。