Перекрашивание экрана

Обычным действием в конце каждого шага, является перекрашивание экрана комнаты. Но в редких обстоятельствах, Вам может понадобиться обновить комнату в других моментах. Это случается тогда, когда Ваша программа превышает управление. Например, перед "заморозкой" может понадобиться долгосрочное перекрашивание. Также, когда Ваш код отображает сообщение и ожидает игрока, который нажмёт клавишу, то Вам нужно произвести перекрашивание между этими действиями. Для этого имеются две программы.

screen_redraw() Перекрашивает экран, выполняя все события рисования заново.
screen_refresh() Перекрашивает экран (не выполняя событий рисования).

Для того чтобы понять вторую функцию, Вам понадобится понимать немного лучше функции рисования. Есть непосредственно изображение, в котором случается всё рисование. Это изображение не видимо на экране. Только в конце шага, после всего, происходит событие рисования, где отображаемое изображение заменяется внутренним изображением. (Это вызывается двойной буферизацией.) Сначала функция перерисовывает внутреннее изображение, затем обновляет отображаемое изображение. Вторая функция только обновляет изображение на экране.

Теперь Вы должны также понять, почему Вы не можете использовать действия рисования или функции в других событиях, а только в событиях рисования. Они "сделают вещи" во внутреннем изображении, но они не будут видимыми на экране. И когда выполняются события рисования, сначала выполняется обновление фона комнаты, стирая всё, что было проделано во внутреннем изображении. Но когда Вы используете screen_refresh() после Вашего обновления, скорректированное изображение станет видимым на экране. Так, например, сценарий может обновить некоторый текст на экране, вызывая функцию восстановления, затем ожидать игрока, который нажмёт клавишу, подобно следующей части кода.

{
  draw_text(room_width/2,100,'Для продолжения нажмите любую клавишу.');
  screen_refresh();
  keyboard_wait();
}

Пожалуйста, поймите, когда Вы рисуете, используя другое событие - не событие рисования, то Вы рисуете просто в изображении, не в виде! Итак, координаты, использованные Вами, такие же, как и при отсутствии видов. Будьте осторожны при использовании этой технологии. Убедитесь, что Вы полностью понимаете, что восстановление экрана занимает некоторое время.

Когда Вы перерисовываете свою комнату, то это может быть полезным, чтобы НЕ позволить перерисовывать всё автоматически. Например, Вы могли бы захотеть перерисовать комнату только через каждые 5 шагов. Для этого Вы можете использовать следующие функции:

set_automatic_draw(value) Указывает автоматическое перекрашивание комнаты (истина, по умолчанию) или нет (ложь).

Наконец, существует функция, благодаря которой Вы можете установить синхронизацию перекрашивания с помощью частоты обновления монитора:

set_synchronization(value) Указывает синхронизацию перекрашивания с помощью частоты обновления монитора.