Компелятор говорит что у StorageContainer нет свойства TotalStorage, как решить эту проблему ? |
Практика. Перемещение объектов в 2D пространстве
SpriteBatch
Основным объектом для работы с 2D графикой является SpriteBatch, более подробно работа со SpriteBatch будет рассмотрена в следующих практических занятиях, в рамках данного занятия необходимо знать лишь основные особенности работы со SpriteBatch.
Вся работа по отображению изображений на экран осуществляется в рамках блоков SpriteBatch.Begin – SpriteBatch.End. Для собственно отображения изображений на экран нужно использовать метод SpriteBatch.Draw. Существуют большое количество перегруженных вариантов вызова данного метода, однако в рамках данной работы будет рассмотрен наиболее простой.
public void Draw ( Texture2D texture, Vector2 position, Color color )
texture – изображение, которое необходимо нарисовать на экране.
position – позиция левого верхнего угла изображения на экране.
color – цвет, используемый для смешивания перед выводом изображения на экран. Чаще всего, этот параметр будет принимать значение Color.White. В таком случае изображение будет иметь цвета, которые были заданы при создании изображения. Вы можете самостоятельно поэксперементировать с данным параметром.
Загрузка содержимого (контента) игры
Перед тем как работать с изображениями (или другими типами игрового содержимого: моделями, звуками, шрифтами и т.д.) необходимо загрузить их в игру при помощи ContentManager.
Для загрузки игрового содержимого в каркасе приложения предусмотрен специальный метод LoadContent.
Загрузка определенного типа содержимого осуществляется вызовом метода Content.Load<ТипСодержимого>("НазваниеФайлаСодержимого").
Например, работы с друмерными изображениями в XNA Frawework используется класс Texture2D.
sprite = Content.Load<Texture2D>("filename");
Объект Texture2D содержит различные свойства, которые пригодятся нам для реализации данной работы.
В частности, Width и Height возращают значения ширины и высоты исходного изображения.
Игровое время
Теперь вспомним основы работы с игровым временем в XNA Framework. Методы Update и Draw получают в качестве параметра единственный объект GameTime, который отвечает за игровое время.
Рассмотрим основые свойства объекта GameTime:
ElapsedGameTime | Игровое время, прошедшее с предыдущего вызова метода Draw/Update |
ElapsedRealTime | Реальное время, прошедшее с предыдущего вызова метода Draw/Update |
IsRunningSlowly | Если это свойство имеет значение true, то время, проходящее между последовательными вызовами метода Update/Draw больше значения, указанного в TargetElapsedTime. Это означает, что игра работает медленнее, чем требуется. Если IsRunningSlowly равняется true, то стоит задуматься над оптимизацией |
TotalGameTime | Игровое время, прошедшее с запуска игры |
TotalRealTime | Реальное время, прошедшее с запуска игры |
Для нас наиболее важными свойствами являются ElapsedGameTime и TotalGameTime. Они возвращают объект типа TimeSpan, который имеет множество различных свойств. Рассмотрим лишь наиболее важные:
Обратите внимание на то, что свойства, название которых не начинается с Total, возвращают целое число, то есть, например, Days будет иметь значение 0 до тех пор, пока не пройдет целый день. В то же время значение TotalDays будет постоянно увеличиваться и по прошествие дня примет значение 1.