Приставки
Nintendo (Dendy)
Nintendo 64
Sega Genesis
Sega CD / 32x
Master System
Super Nintendo
Turbo Grafx 16
Sega Saturn
Sony PlayStation
GameBoy Advance
GameBoy / Color
Game Gear
Atari
Другие

Утилиты
Системные утилиты
GoodXXXX
Sega CD / 32x
Nintendo 64
Переводы, хакинг
Музыка

Мир приставочных игр

Версия 2.00a

Leonis © 2002-2009
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

Для вывода на экран меню и заставок нам необходимо в классе 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 изменялась ровно на одну единицу за одно нажатие клавиши «вниз», необходимо использовать следующую конструкцию кода.


Предыдущая Следующая

Горяченькое

Друзья

Hosted by uCoz