Игра зависает и показывает выполненные 6 макетов подряд. Пропуская - PullRequest
0 голосов
/ 20 января 2019

Хорошо, я пытался плавно переходить на 2D чистый андроид без игрового движка уже неделю. Я использую ScheduledThreadPoolExecutor прямо сейчас.

Итак, у меня есть переменная с именем FPS. Сколько раз персонаж должен подняться, прежде чем достигнет значения 180 Y;

Примечание: FPS на самом деле не является количеством кадров в секунду во всей игре.

Когда для FPS установлено значение 45, приложение никогда не зависает (Если я не буду повторно спамить кнопку перехода)

Но 90, СЛУЧАЙНЫЕ СЛУЧАИ, КОГДА Я ИГРАЮ В ИГРУ игра ЗАМЕРЗНУЕТ и logcat показывает:

E/WindowManager: Performed 6 layouts in a row. Skipping

Неважно, что я использую (например: Handler Runnable и Thread), приложение

Вот код перехода:

    public void jump() {

    final ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);

    if(!isRunning) {
        executor.scheduleWithFixedDelay(new Runnable() {
            boolean moveUpBln = true;
            int timesLooped = 0;
            float FPS = 90; //Never freezes with value of 45 (or under)
            float charMovementFPS = 180 / FPS;

            @Override
            public void run() {
                if(moveUpBln) {
                    isRunning = true;

                    characterModel.setY(characterModel.getY() - charMovementFPS);
                    if (timesLooped == FPS || timesLooped > FPS) {
                        moveUpBln = false;
                        timesLooped = -1;

                    }
                    timesLooped++;
                }else{
                    isRunning = true;

                    characterModel.setY(characterModel.getY() + charMovementFPS);
                    if (timesLooped == FPS || timesLooped > FPS) {
                        executor.shutdownNow();
                        isRunning = false;
                    }
                    timesLooped++;
                }

            }

        }, 0, 3, TimeUnit.MILLISECONDS);

    }
}

ПРИМЕЧАНИЕ: -1 не проблема, это преднамеренно

Что это за layouts, о котором говорит logcat? Оказываю ли я слишком большое давление на мою игру, не связанную с движком?

...