игровой цикл:
public void gameLoop() {
long lastLoopTime = System.nanoTime();
final int TARGET_FPS = 1;
final long OPTIMAL_TIME = 1000000000 / TARGET_FPS;
while (gameRunning) {
long now = System.nanoTime();
long updateLength = now - lastLoopTime;
lastLoopTime = now;
double delta = updateLength / ((double) OPTIMAL_TIME); //time
related
values multiplied with delta
lastFpsTime += updateLength;
fps++;
if (lastFpsTime >= 1000000000) {
System.out.println("(FPS: " + fps + ")");
lastFpsTime = 0;
fps = 0;
}
//update();
try {
sleep((lastLoopTime - System.nanoTime() + OPTIMAL_TIME) /
1000000);
}
catch(InterruptedException e){
e.printStackTrace();
}
}
}
draw2: метод отрисовки работал отлично, когда я тестировал его с помощью метода update в прошлый раз.Я использовал цикл для вызова методов во временном интервале с заданным fps.Почему-то они не вызываются и не рисуют что-либо на экране (белое).
public void draw2(){
Bitmap bmp = Bitmap.createBitmap((int) xscreen, (int) yscreen,
Bitmap.Config.ARGB_8888);
Image.setImageBitmap(bmp);
Paint paint = new Paint();
Canvas canvas = new Canvas(bmp);
canvas.drawColor(Color.rgb(0,0,0));
for (int i = 0; i < Stars.size(); i++){
paint.setColor(Color.argb(255,255,255,255));
canvas.drawCircle(Stars.get(i).x,Stars.get(i).y,Stars.get(i).radius,paint);
}
for(int i = 0; i < Planets.size();i++){
Trailsize = Planets.get(i).Trails.size();
Planets.get(i).update((float)0.1);
paint.setColor(Color.argb(255,150,150,150));
paint.setColor(Color.argb(255,Planets.get(i).red,Planets.get(i).green,
Planets.get(i).blue));
canvas.drawCircle(Planets.get(i).getX(),Planets.get(i).getY(),20,paint);
for (int k = 0; k < Trailsize;k++){
float b = 255 * (k / Trailsize);
float trail = Planets.get(i).trail;
int alpha = (int)(50 + b);
if (Trailsize == Planets.get(i).trail) {
alpha = (int) (255 - b + 50);
}
if (alpha > 255){
alpha = 255;
}
paint.setColor(Color.argb(alpha, Planets.get(i).red,
Planets.get(i).green, Planets.get(i).blue));
paint.setStrokeWidth(10);
if (k != 0) {
canvas.drawLine(Planets.get(i).Trails.get(k).x,
Planets.get(i).Trails.get(k).y, Planets.get(i).Trails.get(k - 1).x,
Planets.get(i).Trails.get(k - 1).y, paint);
}
}
}
Image.setImageBitmap(bmp);
}
Рисование работает при вызове при создании, но я получаю белый экран, только когда пропускаю этот цикл.Я не знаю, почему метод рисования не вызывается и экран только белый.Помощь будет оценена.Спасибо за чтение!