Пользовательские курсоры мыши (Custom Mouse Cursors)

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску

В Ren'Py есть две системы для создания пользовательских курсоров мыши. Первая использует преимущества аппаратного курсора, в то время как вторая использует Ren'Py для рисования отображаемого объекта в качестве курсора мыши.


Преимущества аппаратного курсора:

  • движется очень быстро.
  • очень низкая нагрузка, поэтому у Ren'Py остается время для других процессов.

А также ограничения:

  • Курсоры ограничены небольшими размерами. 32x32 гарантировано, а 64x64, по-видимому, работает.
  • Курсоры ограничены последовательностями файлов изображений.


Использование Ren'Py для рисования отображаемого объекта в качестве курсора отменяет эти ограничения. В то время как курсоры могут быть чем угодно, что может нарисовать Ren'Py, Ren'Py должен сам выполнять рисование. Когда на компьютере включена тройная буферизация, может наблюдаться задержка, не характерная для аппаратного курсора.

Аппаратный курсор мыши (Hardware Mouse Cursor)[править | править код]

Аппаратный курсор управляется переменной config.mouse. Она состоит из словаря, который сопоставляет имена мышей со списком кадров. Каждый кадр представляет собой трехкомпонентный кортеж, содержащий файл изображения, а также смещения по осям X и Y в пределах этого изображения.

Например:

define config.mouse = { }
define config.mouse['default'] = [ ( "gui/arrow.png", 0, 0) ]
define config.mouse['spin' ] = [
    ( "gui/spin0.png", 7, 7 ),
    ( "gui/spin1.png", 7, 7 ),
    ( "gui/spin2.png", 7, 7 ),
    ( "gui/spin3.png", 7, 7 ),
    ( "gui/spin4.png", 7, 7 ),
    ( "gui/spin5.png", 7, 7 ),
    ( "gui/spin6.png", 7, 7 ),
    ( "gui/spin7.png", 7, 7 ),
]


Если анимация состоит из нескольких кадров, кадры воспроизводятся со скоростью 20 кадров в секунду. Ren'Py изменит курсор только при изменении изображения или смещении.

Отображаемый курсор мыши (Displayable Mouse Cursor)[править | править код]

Отображаемый курсор использует переменную config.mouse_displayable и отображаемый объект MouseDisplayable.

Например:

image mouse spin:
    "gui/spin0.png"
    rotate 0.0
    linear 1.0 rotate 360.0

    # Сделайте паузу, чтобы могло произойти прогнозирование изображения.
    pause 1.0

    repeat

define config.mouse_displayable = MouseDisplayable(
    "gui/arrow.png", 0, 0).add("spin", "mouse spin", 9.9, 9.9)


MouseDisplayable(cursor, x, y)
Отображаемый объект, который оборачивает отображаемый курсор мыши и заставляет его перемещаться по экрану, когда игрок перемещает мышь.
cursor
Отображаемый объект, используемый для рисования мыши.
x, y
Координаты горячей точки относительно левого верхнего угла мыши в виртуальных пикселях.


add(name, cursor, x, y)
Добавляет второй курсор, который используется, когда отображается name мыши. Возвращает MouseDisplayable, так что вызовы этого метода могут быть объединены в цепочку.

Использование курсоров мыши (Using Mouse Cursors)[править | править код]

Обычный способ использования курсора мыши заключается в предоставлении свойства mouse, задающего имя курсора, чему-либо, что может быть сфокусировано на экране (кнопка или панель). Например:

screen test():
    textbutton "Тест мыши" action NullAction() mouse "spin"

Также можно использовать default_mouse для глобальной установки курсора мыши:

$ default_mouse = "spin"

Источник[править | править код]

Статья "Custom Mouse Cursors" на английском языке.


На главную страницу Официальная документация движка Вернуться к началу статьи