Canvas中的UWP点击事件

问题描述 投票:1回答:1

我正在创建一个简单的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"/>

以下是游戏如何看待椭圆是蓝色元素的位置。

Game

c# uwp
1个回答
2
投票

根据你的工作,这应该工作:

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

等等

© www.soinside.com 2019 - 2024. All rights reserved.