Реклама в Интернет       Все Кулички
Искусство создания игр
head

Сделать стартовой

 Спрайты (sprites) - это изображения, которые используются объектами для их же визуализации. Для создания спрайтов имеется встройный графический редактор, к тому же можно встроить внешний или просто загрузить уже имеющиеся изображения на диске.

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

создание / удаление

параметры

свойства

информация

les3-1

Рис. 3-1. Добавление спрайта

Точная проверка столкновения нужна для определения пересечения объекта с другими, если проверка отключена то при столкновение проверяется с прямоугольником, описанным вокруг объекта

Следующие подпрограммы могут использоваться для создания и удаления новых спрайтов.

 

sprite_add(fname,imgnumb,precise,transparent,smooth,preload,xorig,yorig)

Добавляет изображение сохранённое в файле с именем fname в набор спрайтовых ресурсов. Для этого доступны только bmp, jpg и gif изображения. Когда изображение является bmp или jpg, то такое изображение может быть стрипом, содержащим множество частей изображений для спрайта. Используйте imgnumb, чтобы указать их число (1 для одиночного изображения). Для (анимированных) gif изображений этот аргумент не используется, так как gif файл использует определённое количество изображений. precise - указывает, должна ли использоваться проверка точного столкновения. transparent - указывает прозрачность изображения. smooth - указывает сглаживание краёв. preload - указывает предварительную загрузку изображения в память. xorig и yorig - указывают первоначальную позицию спрайта. Функция возвращает индекс нового спрайта, который Вы можете затем использовать, чтобы его нарисовать, или использовать для этого переменную sprite_index. Когда происходит ошибка - возвращается -1.

spr=sprite_add(‘1.jpg’,1,1,1,1,0,0,0,); //добавление спрайта

 

sprite_duplicate(ind)

Создаёт дубликат спрайта с именем ind. Возвращает имя созданного спрайта. Если происходит ошибка, возвращается значение -1.

spr1=sprite_duplicate(spr); //копирование спрайта с идентификатором spr


sprite_assign(ind,spr)

Назначает указанному спрайту спрайт с именем ind. Итак, это делает копию спрайта. Таким образом, Вы можете легко установить существующий спрайт вместо другого.


sprite_merge(ind1,ind2)

Объединяет спрайт с именем ind1 со спрайтом с именем ind2. Если их размеры не совпадают, то они масштабируются так, чтобы размеры стали одинаковыми. Спрайт ind2 не удаляется!


sprite_replace(ind,fname,imgnumb,precise,transparent,smooth,preload,xorig,yorig)

Также как и выше, но в этом случае, спрайт с индексом ind заменяется. Функция возвращает, если успешна.


sprite_create_from_screen(x,y,w,h,precise,transparent,smooth,preload,xorig,yorig)

Создаёт спрайт, копируя указанную область экрана. Это делает возможным создавать любой спрайт, который Вы хотите. "Сфотографируйте" изображение экрана, используя эти функции, а затем создайте из него спрайт. (Если Вы этого не делаете в событии рисования, то можете это сделать таким образом. Это не заметно на экране и его обновляет.) Другие параметры - как и прежде. Функция возвращает индекс нового спрайта. Но некоторые предупреждения здесь всё-таки будут. Даже если мы говорим об экране, то это действительно "рисующий регион" этих материалов. То, что есть окно на экране, и что изображение может масштабироваться в этом окне - не имеет значения.


sprite_add_from_screen(ind,x,y,w,h)

Добавляет область экрана, как следующую часть изображения спрайту с индексом ind.


sprite_create_from_surface(id,x,y,w,h,precise,transparent,smooth,preload,xorig,yorig)

Создаёт спрайт, копируя заданную область из поверхности с заданным id. Это позволяет создать любой желаемый спрайт. Рисуйте изображение на поверхности, используя функции рисования, и затем создайте из этого спрайт. Функция возвращает индекс нового спрайта. Обратите внимание, что альфа величины поддерживаются спрайтом.


sprite_add_from_surface(ind,id,x,y,w,h)

Добавляет область поверхности id в качестве кадра спрайта с индексом ind


sprite_delete(ind)

Удаляет спрайт с именем ind, освобождая используемую память.

 

 

Для изменения параметров спрайта доступны следующие подпрограммы:

 

sprite_set_offset(ind,xoff,yoff)

Устанавливает начальную точку спрайта с заданным индексом ind.


sprite_set_bbox_mode(ind,mode)

Устанавливает определение прямоугольника, использующегося для просчёта столкновений спрайта ind. (0=автоматический режим, 1=всё изображение, 2=координаты устанавливаются вручную).


sprite_set_bbox(ind,left,top,right,bottom)

Определяет месторасположение на спрайте ind прямоугольника. Функция может быть использована при условии, что режим прямоугольника определён, как задаваемый вручную.


sprite_set_precise(ind,mode)

Устанавливает улучшенную проверку для событий столкновений спрайта с именем ind (ложь или истина)

 

sprite_set_alpha_from_sprite(ind,spr)

Изменяет alpha значение спрайта с индексом ind используя значение цвета спрайта spr. Это не может быть отменено.

 

Также доступны некоторые свойства (они используются в свойствах объекта):

 

visible

Отражает, рисовать ли спрайт для объекта (истина) или нет (ложь). Невидимые образцы объекта всё еще активны и создают события столкновения; Вы только не видите их. Установка видимости в ложь полезно, например, когда нужно скрыть диспетчер объектов (сделайте его нетвёрдым телом, чтобы избегать событий столкновения) или переключения.

sprite0.visible=true; //видимый спрайт


sprite_index

Содержит имя спрайта для текущего образца объекта. Вы можете изменить его, чтобы задать образцу объекта другой спрайт. Как значение, Вы можете использовать имена других спрайтов, которых Вы определили. Смена спрайта не изменяет индекс к настоящему времени видимого кадра.

sprite_index=1; //используется в свойствах объекта


sprite_width

Указывает ширину спрайта. Эта величина не может быть изменена, но Вы можете захотеть использовать её.

w=sprite_width; //видимый спрайт


sprite_height

Указывает высоту спрайта. Эта величина не может быть изменена, но Вы можете захотеть использовать её.


sprite_xoffset

Указывает горизонтальное смещение спрайта, как определено в свойствах спрайта. Эта величина не может быть изменена, но Вы можете захотеть использовать её.


sprite_yoffset

Указывает вертикальное смещение спрайта, как определено в свойствах спрайта. Эта величина не может быть изменена, но Вы можете захотеть использовать её.


image_number

Содержит количество кадров у спрайта текущего образца объекта (не может быть изменено).


image_index

Содержит номер кадра спрайта текущего образца объекта, с которого следует начать проигрывание анимации. Эта переменная указывает к настоящему времени нарисованный кадр (нумерацию начинайте с 0). Вы можете изменить текущее изображение изменением этой переменной. Программа продолжит повторение, начиная с новым индексом. (Значение может иметь дробную часть. В этом случае, оно всегда будет округлено в меньшую сторону, чтобы получить кадр, который рисуется.)


image_speed

Cкорость с которой повторяется цикл кадров. Значение 1 указывает, что каждый шаг будет получать следующее изображение. Меньшие значения переключают кадры медленнее, так как требуют для этого больше времени. Большие значения пропускают некоторые кадры, делая тем самым движение быстрее. Иногда Вы захотите, чтобы конкретный кадр был видимым, и, при этом, не захотите, чтобы программа их всех не повторяла. Это может быть достигнуто установкой скорости на 0 и выбором "правильного" кадра. Например, допустим, что у Вас есть объект, который может вращаться, и Вы создаёте спрайт, который имеет кадры для множества направлений (против часовой стрелки). Затем, в событии шага объекта, Вы можете установить

 

depth

Отражает текущую глубину "отрисовки" спрайта текущего образца объекта. Вы можете изменить это значение, устанавливая глубину изображения. Значение по умолчанию - 0, если Вы не установили это в другом значении в свойствах объекта. Более высокое значение продвигает образец объекта прочь. (Вы можете также использовать отрицательные значения.) Образцы объекта с более высокой глубиной пролегают позади образцов объекта с более низкой глубиной. Установка глубины гарантирует, что образцы объекта находятся в порядке. Вы можете захотеть (например, плоскость перед облаком) что бы фоновые образцы объекта иметь высокую глубину (положительную), а образцы объекта переднего плана, должны иметь глубину низкого уровня (отрицательную).


image_xscale

Коэффициент масштабирования спрайта по оси X для создания больших или малых изображений. Значение 1 указывает обычный размер. Вы должны отдельно установить горизонтальный xscale и вертикальный yscale размер. Изменение масштабирования также изменяет значения для ширины и высоты изображения и влияет на события столкновения. Поймите, что масштабированные изображения (в основном, когда Вы делаете их меньше), занимают для "отрисовки" больше времени. Изменение масштабирования может быть использовано для получения 3-D эффекта. Вы можете использовать величину -1, чтобы отражать спрайт по горизонтали.


image_yscale

Содержит коэффициент масштабирования спрайта по оси Y. 1 - нет масштабирования. Вы можете использовать значение -1, чтобы отразить спрайт по вертикали .


image_angle

Угол, с которым спрайт будет вращаться. Вы определяете градусы против часовой стрелки. Значение 0 не указывает вращения. Эта переменная может быть установлена только в зарегистрированной версии!


image_alpha

Содержит коэффициент прозрачности спрайта (от 0 до 1). Используйте осторожно. Частично прозрачные изображения при "отрисовке" занимают много времени и замедляют игру.


image_blend

Смешивает цвет, используемый при рисовании спрайта. Величина c_white по умолчанию. Когда Вы определяете другую величину, то изображение смешивается с этим цветом. Это может быть использовано для перекрашивания спрайта "на лету". Эта переменная может быть установлена только в зарегистрированной версии!


bbox_left

Содержит координату левого края прямоугольника спрайта, который используется для просчёта столкновений (в счёт также берётся масштабирование).


bbox_right

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


bbox_top

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


bbox_bottom

Содержит координату нижнего края прямоугольника спрайта, который используется для просчёта столкновений

 

 

Следующие функции предоставят Вам информацию о спрайте:

 

sprite_exists(ind)

Возвращает, если спрайт с заданным индексом ind существует.


sprite_get_name(ind)

Возвращает имя спрайта, с заданным индексом ind.


sprite_get_number(ind)

Возвращает количество кадров, содержащихся в спрайте с заданным индексом ind.


sprite_get_width(ind)

Возвращает ширину спрайта с заданным индексом ind.


sprite_get_height(ind)

Возвращает высоту спрайта с заданным индексом ind.


sprite_get_transparent(ind)

Возвращает истину, если спрайт с заданным индексом ind является прозрачным.


sprite_get_smooth(ind)

Возвращает, если спрайт с заданным индексом ind имеет сглаженные края.


sprite_get_preload(ind)

Возвращает, если спрайт с заданным индексом ind предварительно загружен.


sprite_get_xoffset(ind)

Возвращает смещение по оси x спрайта с заданным индексом ind.


sprite_get_yoffset(ind)

Возвращает смещение по оси y спрайта с заданным индексом ind.


sprite_get_bbox_left(ind)

Возвращает координату левого края прямоугольника, рисуемого на спрайте с заданным индексом ind.


sprite_get_bbox_right(ind)

Возвращает координату правого края прямоугольника, рисуемого на спрайте с заданным индексом ind.


sprite_get_bbox_top(ind)

Возвращает координату верхнего края прямоугольника, рисуемого на спрайте с заданным индексом ind


sprite_get_bbox_bottom(ind)

Возвращает координату нижнего края прямоугольника, рисуемого на спрайте с заданным индексом ind


sprite_get_bbox_mode(ind)

Возвращает тип инициализации прямоугольника, который рисуется на спрайте с заданным индексом ind. (0=определяемый автоматически, 1=всё изображение, 2=значения, указываемые вручную.


sprite_get_precise(ind)

Возвращает, если спрайт с заданным индексом ind использует улучшенную проверку столкновений

Rambler's Top100

Requier inc. 2007