Особенности работы со спрайтами.

  1. 3 weeks ago
    Edited 3 weeks ago by FROST

    Здравствуйте.

    У меня накопилось несколько вопросов по работе с модулем sprite. Начну с наиболее актуального для меня на данный момент.
    Есть потребность использовать методику, описанную в Справочнике , то есть использование sprite совместно с модулем theme. Есть необходимость регулярно работать с элементами, реализуемыми через font:text():draw().

    Вопрос:
    Возможно ли менять текст заданного sprite.fnt(), не перерисовывая спрайт фона? Иначе при многослойном построении изображения во время каждого изменения отдельно слоя приходится перерисовывать все слои (спрайты).

  2. peter

    Sep 22 Administrator Земля(Москва) User since 2014

    К сожалению, нельзя.
    В этом, собственно, и задача более высокоуровневых библиотек -- делать более человеко-ориентированное api.

    Обычно, если говорить о direct режиме, мы перерисовываем кадр слой за слоем целиком.
    В случае theme -- каждый раз меняем bg.

  3. peter

    Sep 22 Administrator Земля(Москва) User since 2014
    Edited 3 weeks ago by peter

    Хотя, уточни вопрос. Ты рисуешь по bg? Где ты используешь свои картинки? Нужен пример.

  4. Edited 3 weeks ago by FROST

    Последовательность (не direct режим):

    1. Создаю спрайт размером с рабочую область workspace = sprite.new(theme.get 'scr.w',theme.get 'scr.h')
    2. Создаю спрайт backdrop с картинкой ровно поразмеру рабочей области
    3. Рисую backdrop в workspace
    4. Наношу подложку под текст (для читабильности) bgtxt в workspace
    5. Наношу элемент управления (Sprite.fnt) в workspace
    6. Меняю фон theme.set('scr.gfx.bg', workspace)

    Самая большая работа в том, что Sprite.fnt визуально должен быть похож на поведение объектов в сцене (то есть менять цвет при наведении мыши).

  5. peter

    Sep 22 Administrator Земля(Москва) User since 2014

    Ну в целом так и есть. Только спрайт можешь workspace не все время создавать, а создать его один раз. А потом менять его так, как хочешь и снова сетить bg.

    Еще вариант, рисовать в области картинки. Тогда просто game.pic например делаешь спрайтом и рисуешь прямо в pic. И оно будет адекватно отрисоваться.

or Sign Up to reply!