Перейти к основному содержимому

10.1. Для чего нужен оператор REFINT, и как он работает?

В: Для чего нужен оператор REFINT, и как он работает?

О: О том, для чего нужен оператор REFINT, и как он работает, прямо написано в справке:

REFINT — обновление интерфейса (а также смена цветов, шрифта, назначенных с помощью системных переменных BCOLOR, FCOLOR, LCOLOR, FSIZE, $FNAME).

И ещё:

Обновление настроек интерфейса происходит 2 раза в секунду (автоматически, по умолчанию), либо с помощью оператора REFINT. Также см. оператор SETTIMER.

Таким образом, оператор REFINT нужен для принудительного обновления настроек интерфейса.

Есть ещё комментарий от разработчика:

REFINT принудительно выводит на экран текст, который находится в буфере вывода

Это говорит о том, что перед тем, как вывести на экран текст, плеер помещает его в буфер, и только потом (после выполнения кода локации) выводит на экран. REFINT позволяет не только обновить настройки интерфейса, но и вывести часть текста, уже помещённую в буфер, на экран.

Чтобы лучше понять, что делает REFINT, напишите игру с таким кодом, и покликайте на действия:

showstat 0
showobjs 0
act "меняем настройки без refint":
showstat 1
bcolor=rgb(0,88,0)
loop local i=0 while i<10000000 step i+=1:
! пустой цикл

end
end
act "меняем настройки c refint":
showobjs 1
bcolor=rgb(0,88,88)
refint
loop local i=0 while i<10000000 step i+=1:
! пустой цикл

end
end

Не удивляйтесь подвисанию игры при клике по действию — цикл из десяти миллионов итераций выполняется долго.