【问题标题】:UWP click event within CanvasCanvas 中的 UWP 点击事件
【发布时间】:2019-02-26 05:15:36
【问题描述】:

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

    根据您的操作,这应该可以:

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

    等等

    【讨论】:

      猜你喜欢
      • 2014-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多