Пишу на Java c фреймворком libgdx игру для мобильных устройств. После прохождения меняется экран и при нажатии игрока на кнопку "Следующий уровень" сначала выводится надпись загрузка уровня, потом грузиться уровень и после чего запускается. То есть
drawing();
loadLevel();
setScreen();
На деле же, сначала загружается уровень(loadLevel()), потом на мгновение вылезает надпись и начинается уровень. Как ни пытался менять алгоритм - сначала загружается уровень(выглядит так, как будто всё подвисает).
Перешёл на Java недавно с JavaScript, что я упускаю?
Сообщение не в смысле «что-то вывести на экран», а т.н. window messages — внутренние объекты операционной системы. Одни из них сидят и ждут своей очереди, как нажатия клавиш или пользовательские сообщения, другие — как таймеры и прорисовки — места в очереди не занимают, но генерируются на месте.
Mercury13: Кажется это совсем не то. У меня порядок такой:
1. Заменить значение переменной.
2. Отрисовать новую текстуру(которая хранится в только что изменённой переменной).
3. Загрузить новый уровень(это просто создание контейнера с объектами игровых клеток).
И получается так, что сначала грузиться уровень, а потом происходит отрисовка. Причём тут операционная система не могу понять.
Видимо, управляемая нами отрисовка происходит в заэкранный буфер, а по событию WM_PAINT этот буфер сбрасывается на экран. Так что надо просто сделать, чтобы «бегали» системные события — иначе на экране ничего не будет.
Mercury13: Спасибо большое, решил проблему так. После того, как функция batch.isDrawing() возвращает три раза true(не понимаю почему нужно три раза) я вызываю функцию загрузки уровня, видимо в библиотеке отрисовка работает не так просто как я думал.