Предыдущая Следующая
Для вывода на экран меню и заставок нам необходимо в классе Gamel объявить объекты классов SplashScreen, MenuGame, HelpScreen, AboutScreen и BooksScreen.
private SplashScreen splash; private MenuGame menuGame; private HelpScreen help; private AboutScreen about; private BooksScreen books;
А затем и создать эти объекты.
splash = new SplashScreen(); menuGame = new MenuGame(); help = new HelpScreen(); about = new AboutScreen(); books = new BooksScreen();
После чего в методе Initialize() класса Gamel мы можем спокойно вызывать соответствующие методы классов SplashScreen, MenuGame, HelpScreen, AboutScreen и BooksScreen для загрузки в игру графики.
splash.InitializeSplashScreen(content, screenWidth, screenHeight); menuGame.InitializeMenuGameScreen(content, screenWidth, screenHeight); help.InitializeHelpScreen(content, screenWidth, screenHeight); about.InitializeAboutScreen(content, screenWidth, screenHeight); books.InitializeBooksScreen(content, screenWidth, screenHeight);
22.5.2. Обновляем состояние игры в методе Update()
Обработка нажатия клавиши Enter в меню и титульной заставке, а также обработка клавиш перехода по меню - это основная и самая главная проблема, которую нам нужно решить. Дело в том, что любое нажатие клавиши на клавиатуре и ее неотпускание ведут к цикличному выполнению определенного условия, назначенного на эту клавишу. Например, посмотрите на блок кода, приведенный ниже.
if (keyboardState.IsKeyDown(Keys.Down))
{
state += 1;
}
Если создать такое условие, то нажатие клавиши «вниз» (Keys.Down) и ее неотпускание ведет к постоянному увеличению переменной state. И даже если вы на-
жмете клавишу и моментально отпустите ее, совсем не факт, что вы отпустили эту клавишу в тот момент, когда переменная увеличится всего на одну единицу. Любая задержка нажатия клавиши «вниз» ведет к увеличению переменной state, и проследить значение этой переменной и тем более управлять ею просто не возможно.
В связи с этим необходимо создать условие, которое вне зависимости от длительности нажатия и удерживания (в данном случае) клавиши «вниз» увеличивало переменную state ровно на одну единицу. Именно для этих целей в XNA имеется метод IsKeyUp(), который на системном уровне регулирует или следит за состоянием нажатой и отпущенной клавиши.
Чтобы приведенный выше код работал корректно, а переменная state изменялась ровно на одну единицу за одно нажатие клавиши «вниз», необходимо использовать следующую конструкцию кода. Предыдущая Следующая
|