Событие клика UWP в Canvas - PullRequest
0 голосов
/ 25 февраля 2019

Я создаю простую игру UWP, в которой я управляю эллипсом, сгенерированным в формате XML.

У меня есть простая функция, которая обрабатывает клавиши со стрелками и перемещает эллипс:

    void CoreWindow_KeyDown(CoreWindow sender, KeyEventArgs args)
    {
            // The click event is up.
            if (args.VirtualKey == VirtualKey.Up)
            {
                // Move up.
                Canvas.SetTop(player, Canvas.GetTop(player) - 20);
            }
            // The click event is down.
            else if (args.VirtualKey == VirtualKey.Down)
            {
                // Move down.
                Canvas.SetTop(player, Canvas.GetTop(player) + 20);
            }
            // The click event is right.
            else if (args.VirtualKey == VirtualKey.Right)
            {
                // Move right.
                Canvas.SetLeft(player, Canvas.GetLeft(player) + 20);
            }
            // The click event is left.
            else if (args.VirtualKey == VirtualKey.Left)
            {
                // Move left.
                Canvas.SetLeft(player, Canvas.GetLeft(player) - 20);
            }           
    }

Проблемас этим то, что эллипс также перемещается из окна, то есть холста.Есть ли способ выполнить вышеуказанную функцию только до тех пор, пока эллипс находится внутри окна?Я пробовал подобный код, но он не работал:

   if (Canvas.GetLeft(player) < levelOneImage.ActualWidth ||
    Canvas.GetTop(player) < levelOneImage.ActualHeight)

Я просто проверяю, превышают ли координаты эллипса координаты изображения.

Это XAML для эллипса:

 <Ellipse x:Name="player" Fill="SteelBlue" Height="50" Width="50"/>

Вот как выглядит игра, где эллипс является синим элементом.

Игра

1 Ответ

0 голосов
/ 25 февраля 2019

В зависимости от того, что вы делаете, это должно работать:

   if (Canvas.GetLeft(player) >= 20 && args.VirtualKey == VirtualKey.Left)
   {
     Canvas.SetLeft(player, Canvas.GetLeft(player) - 20);
   }

и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...