Программирование для мобильных платформ. Windows Phone. Иван Трещев
Чтение книги онлайн.
Читать онлайн книгу Программирование для мобильных платформ. Windows Phone - Иван Трещев страница 3
spriteBatch.Draw(название_переменной, new Rectangle(координата_x, координата_y, ширина, высота), Color.White);
Обработка нажатий
Нажатия на экран
Современные мобильные телефоны в большинстве случаев оснащены большим сенсорным экраном и минимальным количеством аппаратных кнопок, поэтому и организация взаимодействия с играми построена на считывании жестов с экрана.
В методе Game1() прописываются жесты, что могут быть использованные в игре:
public Game1()
{
<…>
TouchPanel.EnabledGestures = GestureType.Tap | GestureType.FreeDrag;
<…>
}
Все возможные жесты можно посмотреть в подсказке, всплывающей при вводе" GestureType". Наиболее часто используемые из них, это Tap – нажатие, FreeDrag – перетягивание, Hold – долгое нажатие, DoubleTap – двойное нажатие. Так же можно обработать и действия при отсутствии жестов.
В логике игры размещается следующее:
while (TouchPanel.IsGestureAvailable)
{
// Считывание жеста
GestureSample gesture = TouchPanel.ReadGesture();
// Координаты касания и другие необходимые параметры
int tapY = (int)gesture.Position.Y;
int tapX = (int)gesture.Position.X;
<…>
switch (gesture.GestureType)
{
// Если жест является нажатием:
case GestureType.Tap:
<…>
break;
<…>
// Если жест является перетягиванием:
case GestureType.FreeDrag:
<…>
break;
}
}
Нажатия на аппаратные кнопки
Обработка нажатий на аппаратные кнопки тоже важна, однако в приложении запрещено использовать их для нестандартных функций (например, аппаратную кнопку назад для установления паузы).
Одним из требований к приложениям и играм является то, что необходимо программировать действия для аппаратной кнопки назад таким образом, что после нажатия на нее показывается предыдущий модуль игры (не относится к игровым уровням), пример:
Меню – Список уровней – Уровень 1 – Уровень 2
Из любого уровня переход назад осуществляется в Список уровней, даже если новый уровень запускался после предыдущего, из Списка уровней соответственно в Меню, из Меню же происходит выход из приложения:
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
{
if (Mode == GameMode.Menu)
{
this. Exit ();
}
else if (Mode == GameMode.Levels)
{
Mode = GameMode.Menu;
}
else if (Mode == GameMode.Level_1)
{
Mode = GameMode. Levels;
}
else if (Mode == GameMode.Level_2)
{
Mode = GameMode.Levels;
}
}
Создание игровых модулей рассмотрено в соответсвующем разделе.
Работа с таймером
Некоторые игры требуют работу со временем и выводом некоторого таймера