Предыдущая Следующая
namespace DrawSprite {
public class Gamel : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
130 Работа с двухмерной графикой
ContentManager content; Texture2D spriteTexture; Vector2 spritePosition; SpriteBatch spriteBatch;
/// <summary> /// Конструктор /// <summary> public Game1() {
graphics = new GraphicsDeviceManager(this); content = new ContentManager(Services); graphics.PreferredBackBufferWidth = 1280; graphics.PreferredBackBufferHeight = 720;
}
/// <summary> /// Инициализация /// <summary>
protected override void Initialize()
{
spritePosition.X = 300; spritePosition.Y = 200;
base.Initialize();
}
/// <summary>
/// Загрузка компонентов игры /// <summary>
protected override void LoadGraphicsContent(bool loadAllContent)
{
if(loadAllContent)
{
spriteBatch = new SpriteBatch(graphics.GraphicsDevice); spriteTexture = content.Load<Texture2D>(«Content\\Textures\\sprite»);
} }
/// <summary>
/// Освобождаем ресурсы
/// <summary>
protected override void UnloadGraphicsContent(bool unloadAllContent)
{ }
/// <summary>
/// Обновляем состояние игры /// <summary>
protected override void Update(GameTime gameTime)
{ }
Проект DrawSpriteClass 131
/// <summary>
/// Рисуем на экране
/// <summary>
protected override void Draw(GameTime gameTime)
{
graphics.GraphicsDevice.Clear(Color.CornflowerBlue); spriteBatch.Begin(SpriteBlendMode.AlphaBlend);
spriteBatch.Draw(spriteTexture, spritePosition, Color.White); spriteBatch.End();
base.Draw(gameTime);
} }
}
6.3. Проект DrawSpriteClass
В первом проекте, работая с изображением, мы использовали класс Gamel, в котором обеспечивалась загрузка спрайта в программу. Такой подход оправдан для небольших демонстрационных примеров, где программный код может составлять несколько десятков строк. В больших играх этот подход не годится, поскольку количество строк исходного кода может составлять несколько тысяч и в итоге можно элементарно запутаться в своем коде, не говоря уже о сторонних программистах. Поэтому перед созданием игры всегда необходимо тщательно продумывать структуру будущих классов. Тем более что язык программирования C# тем и хорош, что он объектно-ориентированный и все его лучшие качества заключены именно в этом стиле программирования.
В новом проекте DrawSpriteClass мы создадим дополнительный класс Sprite, который будет отвечать за все спрайты, загружаемые в игру. Далее с каждой новой главой функционал класса Sprite будет пополняться новыми методами, что позволит нам разработать универсальный класс для работы с графическими изображениями, который в дальнейшем вы можете усовершенствовать по своему усмотрению. Предыдущая Следующая
|