Предыдущая Следующая
{
graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin(SpriteBlendMode.AlphaBlend);
sprite.DrawAnimationSprite(spriteBatch);
spriteBatch.End();
base.Draw(gameTime);
}
Полный исходный код проекта Animation вы найдете на компакт-диске в папке Code\Chapter7\Animation.
7.2. Проект Background
Фоновые изображения в играх могут быть различного плана, здесь все зависит от конкретной задачи в реализации самой игры. В нашем случае фон представлен сразу двумя статическими изображениями размером в 1024 пикселя по ширине и 768 пикселей по высоте (размер экрана монитора). Поэтому начальной точкой вывода этих изображений служит начало отсчета системы координат (рис. 7.3).
protected override void Update(GameTime gameTime) {
keyboardState = Keyboard.GetState();
if (keyboardState.IsKeyDown(Keys.Escape))
this.Exit();
double elapsed = gameTime.ElapsedGameTime.TotalSeconds; sprite.üpdateFrame(elapsed);
base.üpdate(gameTime);
}
В качестве параметра в методе UpdateFrame() класса Sprite передается значение переменной elapsed. Эта переменная при каждой итерации игрового цикла, то есть при каждом новом проходе по методу Update(GameTime gameTime), получает текущее значение времени, прошедшее за один игровой цикл или за один проход по коду метода Update(GameTime gameTime). А уже в методе UpdateFrame() класса Sprite происходит сравнение времени задержки на показ одного фрейма с прошедшим временем и соответственно решается, показывать по-прежнему этот фрейм анимационной последовательности или переходить к следующему фрейму.
В самом конце исходного кода класса Gamel происходит вызов метода Draw() , где на экран выводится один из фреймов всей анимационной последовательности изображения.
protected override void Draw(GameTime gameTime)
Рис. 7.3. Расположение фона на экране монитора
В качестве фоновой картинки мы используем два изображения. Первое изображение - это основной фон игры, а второе изображение представляет специальную рамку и бортик. Рамка рисуется по окантовке всего экрана, а внутреннее пространство этой рамки вырезается (рис. 7.4). Впоследствии в рамке будет выводиться подсчет очков и другая сопутствующая игровая информация. Ширина рамки с правой стороны составляет 300 пикселей. Это значение нам понадо-
104 Спрайтовая анимация
Проект Background 105
Рис. 7.4. Фоновое изображение
бится в дальнейшем при расчете местоположения падающих с неба объектов. Но возникает вопрос: а зачем нам два изображения, когда все это можно было нарисовать в одном рисунке? Предыдущая Следующая
|