public override void HandleInput(InputState input) { // cancel the current screen if the user presses the back button PlayerIndex player; if (input.IsNewButtonPress(Buttons.Back, null, out player)) { ExitScreen(); } RootControl.HandleInput(input); base.HandleInput(input); }
/// <summary> /// Responds to user input, changing the selected entry and accepting /// or cancelling the menu. /// </summary> public override void HandleInput(InputState input) { // we cancel the current menu screen if the user presses the back button PlayerIndex player; if (input.IsNewButtonPress(Buttons.Back, ControllingPlayer, out player)) { OnCancel(player); } // look for any taps that occurred and select any entries that were tapped foreach (GestureSample gesture in input.Gestures) { if (gesture.GestureType == GestureType.Tap) { // convert the position to a Point that we can test against a Rectangle Point tapLocation = new Point((int)gesture.Position.X, (int)gesture.Position.Y); // iterate the entries to see if any were tapped for (int i = 0; i < menuEntries.Count; i++) { MenuEntry menuEntry = menuEntries[i]; Rectangle a = GetMenuEntryHitBounds(menuEntry); //Debug.WriteLine("menu:x:"+a.X.ToString()+"y:"+a.Y.ToString()+"width:"+a.Width.ToString()+"height:"+a.Height+"pt:"+tapLocation.X.ToString()+"|"+tapLocation.Y.ToString()); if (GetMenuEntryHitBounds(menuEntry).Contains(tapLocation)) { // select the entry. since gestures are only available on Windows Phone, // we can safely pass PlayerIndex.One to all entries since there is only // one player on Windows Phone. OnSelectEntry(i, PlayerIndex.One); } } } } }