Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su
10.10. Как сделать плавное появление текста?
В: Как сделать плавное появление текста?
Как сделать плавное изменение цвета фона?
Как сделать плавное изменение цвета текста?
О:
Чтобы создать у игрока видимость плавного проявления текста, необходимо изначально задать одинаковый цвет и тексту и фону, а затем постепенно изменять значения цвета в сторону нужного.
Ниже, в качестве примера, приведён код проявления чёрного текста на белом фоне для локации-счётчика:
! font['red']=255 & font['green']=255 & font['blue']=255 & ! составляющие цвета шрифта
! bg['red']=255 & bg['green']=255 & bg['blue']=255 & ! составляющие цвета фона
! fcolor=rgb(font['red'],font['green'],font['blue'])
! bcolor=rgb(bg['red'],bg['green'],bg['blue'])
! Текст будет проявляться примерно за 600 мс, нужно выставить settimer
! settimer 20
! чтобы код не выполнялся даже когда текст полностью проявится, переменной count['font']
! будет присвоена единица. Чтобы запустить выполнение кода, нужно присвоить этой переменной ноль
! count['font']=0
! непосредственно код
if count['font']=0:
! если коду разрешено выполняться
! при каждом обращении к локации-счётчику вычитаем из значения составляющих цвета шрифта по 8
font['red']-=8
font['green']-=8
font['blue']-=8
! если значения достигли нуля, то они не могут опуститься ниже
if font['red']<1: font['red']=0
if font['green']<1: font['green']=0
if font['blue']<1: font['blue']=0
! так же если значения достигли нуля, значит больше коду незачем выполняться
if font['red']<1 and font['green']<1 and font['blue']<1: count['font']=1
! каждое обращение к локации-счётчику необходимо менять цвет шрифта
fcolor=rgb(font['red'],font['green'],font['blue'])
! обновляем настройки интерфейса
refint
! не забываем закрывать многострочные условия
end
Чтобы изменять скорость проявляения текста, можно менять период обращения к локации-счётчику через `settimer`, или заменить восьмёрку в моменте вычитания числа из составляющих на более подходящее число.
Задачи по плавному изменению цвета фона, или текста решаются аналогичным образом.
Использовать подобный код непосредственно на любой другой локации или в действии, в сочетании с `wait`, не рекомендуется, поскольку это намертво подвешивает игру. Многих игроков подобные "повисания" раздражают.