Приставки
Nintendo (Dendy)
Nintendo 64
Sega Genesis
Sega CD / 32x
Master System
Super Nintendo
Turbo Grafx 16
Sega Saturn
Sony PlayStation
GameBoy Advance
GameBoy / Color
Game Gear
Atari
Другие

Утилиты
Системные утилиты
GoodXXXX
Sega CD / 32x
Nintendo 64
Переводы, хакинг
Музыка

Мир приставочных игр

Версия 2.00a

Leonis © 2002-2009
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

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

В последней строке кода метода DrawAnimationSprite() происходит прорисовка одного из фреймов на экране монитора:

spriteBatch.Draw(spriteTexture, spritePosition, rectangle, Color.White);

Где параметры:

□ spriteTexture - это загруженное в игру изображение;

□ spritePosition - позиция на экране монитора;

□ rectangle - ограничивающий или отсекающий прямоугольник, равный ширине и высоте одного фрейма;

□ Color.White - задает цвет для рисуемого изображения.

Полный исходный код класса Sprite проекта Animation представлен в листинге 7.1.

//=========================================================================

/// <summary>

98 Спрайтовая анимация

Проект Animation 99

/// Листинг 7.1

/// Исходный код к книге:

/// "Программирование компьютерных игр под Windows в XNA Game Studio Express" /// Автор книги: Горнаков С. Г.

/// Глава 7

/// Проект: Animation /// Класс: Sprite /// Создаем анимацию /// <summary>

//=========================================================================

#region Using Statements using System;

using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics;

#endregion

namespace Animation

{

public class Sprite

{

public Texture2D spriteTexture; public Vector2 spritePosition; private int frameCount; private double timeFrame; private int frame; private double totalElapsed;

/// <summary> /// Конструктор /// <summary> public Sprite()

{ }

/// <summary>

/// Конструктор для анимированного спрайта /// <summary>

public Sprite(int frameCount, int framesPerSec) {

frameCount = frameCount;

timeFrame = (float)1 / framesPerSec;

frame = 0;

totalElapsed = 0;


Предыдущая Следующая

Горяченькое

Друзья

Hosted by uCoz