## Регистрация

Объявлять изображения можно в любой момент (главное - до их использования): и в `init`-блоке, и в `label`-секции. Делается это так:

    image np smile = "images/sprites/np/np_smile.png"
    image np normal = "images/sprites/np/np_normal.png"

Путь к изображениям задаётся относительно директории resources. Если определить изображение 2 раза (например, `np smile`), то при повторном определении старое изображение будет замещено новым.

## Показ спрайта

Отобразить изображение на экране можно командой `show`:
`show np smile`
Стоит обратить внимание на то, что если мы сейчас сделаем:
`show np normal`
То первое изображение пропадёт.

## Псевдоним

Скрытие предыдущего изображения из абзаца выше происходит из-за того, что они имеют один и тот же псевдоним. Псевдоним указывается параметром `as` после имени изображения:
`show np normal as np1`
В случае же, когда мы не указываем его вручную, он автоматически приравнивается первому слову в имени изображения (в данном случае `np`). Т. е. когда мы отображаем `np normal`, изображение получает такой же псевдоним (`np`), как и `np smile`, поэтому `np smile` и убирается со сцены в примере из прошлого абзаца.

Кроме `as` есть и другие параметры.

## Позиция

`at` указывает местоположение на экране, например:

- `show np smile at left` - слева
- `show np smile at center` - по центру
- `show np normal at fright` - справа, близко к краю

Допустимы следующие значения (слева направо): `fleft, left, cleft, center, cright, right, fright` (по умолчанию используется `center`).
На самом деле, это специальные объекты, причём указание места - лишь часть их функционала. Они также отвечают и за анимации с трансформациями. О том, как создавать свои объекты такого типа, рассказывается в главе про ATL.

## На втором плане

Указать положение за каким-либо персонажем позволяет `behind`.
Допустим, у нас есть какой-то персонаж `sp`, и мы его отображаем так:
`show sp normal at cright`
Тогда при выполнении следующей команды персонаж `np` будет спереди `sp`:
`show np normal at right`
А если мы хотим поместить его позади, то следует использовать `behind`:
`show np normal at right behind sp`

Нужно отметить, что `sp` здесь является псевдонимом. Т. е. если бы на пару строк выше `sp` был бы показан с использованием `as sp1`, то и сейчас мы должны были бы написать `behind sp1`.

## Эффект

`with` указывает эффект, с которым отображается изображение (затемнение, появление и т. д.).
Для эффектов выделена отдельная глава, так что детали ищите там.

## Скрытие

`hide np`
Здесь `np` - тоже псевдоним.

## Сцены

Показ сцены убирает все объекты и показывает изображение нужной сцены. Примеры:

    scene bg black
    scene cg my_room
    scene # просто убрать всё

## Авто-масштабирование

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

    image np smile = "images/sprites/np/np_smile.png"

То же самое произойдёт и при указании абсолютных размеров:

    image np smile = "images/sprites/np/np_smile.png":
        size (400, 600)

Ситуация будет лучше при указании относительных размеров (относительно размера окна):

    image np smile = "images/sprites/np/np_smile.png":
        size (0.3, 0.889) # 400 / 1200, 600 / 675

Проблема же, однако, в том, что разные спрайты могут иметь разные размеры.

Решения:

1. Добавить пустые места в изображениях (слева, справа и сверху) и поставить один и тот же относительный размер в default_decl_at - лишнее расходование многих ресурсов, иногда довольно значительное.
2. Указывать разные относительные размеры для каждого спрайта - муторно, долго, используемые числа не очевидны, ошибки незаметны.

Авто-мастштабирование позволяет избавиться от всех этих недостатков.
Достаточно лишь указать размеры экрана, для которого предназначены спрайты, и во время игры их размеры будут автоматически изменены так, чтобы отношение оригинальных размеров к указанным размерам окна были такими же как отношения новых, вычисленных размеров к текущим размерам окна.

Указание размеров экрана, для которого предназначены спрайты, в новом проекте по умолчанию такое:

    init -1000:

        # only for scaling sprites!
        $ config.width, config.height = 1200, 675

        $ default_decl_at = []

        image rn happy = 'images/sprites/rn/happy.png'

Здесь вам требуется заменить `1200, 675` на размеры своего "стандартного экрана", к примеру, на `1920, 1080`.

Хотя изображения с явно указанными размерами тоже будут отмасштабированы, обычно всё-таки нет никакой нужды эти размеры указывать, и потому дефолтную трансформацию (`default_decl_at`) обычно имеет смысл держать пустой.

P. S. Т. к. `config` - на самом деле часть `persistent`-объекта (который сохраняет свойства между запусками), то для отключения авто-масштабирования следует установить указанные свойства в `None`, а не просто удалить или закомментировать установку числовых значений.

Далее ->
<- Назад