2017-03-11 41 views
0

我在C#中的Windows通用应用程序上开发游戏。我在界面上有四个按钮(左,右,上,下)来移动我地图上的角色。当按下按键时激活按钮C#通用应用程序

我的问题是:如何激活我的功能用键盘箭头移动()?

我尝试了很多的解决方案,从网络获取键被按下,但大多数的哦,关心他们唯一的输入形式...

回答

1

可以使用的KeyDown让键盘处于活动状态。

的XAML是

<Page 
    x:Class="ktbkwbconcern.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:ktbkwbconcern" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d"> 

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" KeyDown="Grid_OnKeyDown"> 
     <Button x:Name="btn" Content="K"> 
      <Button.RenderTransform> 
       <CompositeTransform></CompositeTransform> 
      </Button.RenderTransform> 
     </Button> 
     <Grid VerticalAlignment="Bottom"> 
      <Grid.RowDefinitions> 
       <RowDefinition></RowDefinition> 
       <RowDefinition></RowDefinition> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition></ColumnDefinition> 
       <ColumnDefinition></ColumnDefinition> 
      </Grid.ColumnDefinitions> 
      <Button Grid.Row="0" Grid.Column="0" Content="left" Click="Button_OnClick"></Button> 
      <Button Grid.Row="1" Grid.Column="0" Content="up" Click="Button_OnClick"></Button> 
      <Button Grid.Row="0" Grid.Column="1" Content="down" Click="Button_OnClick"></Button> 
      <Button Grid.Row="1" Grid.Column="1" Content="right" Click="Button_OnClick"></Button> 
     </Grid> 
    </Grid> 
</Page> 

它会向上和向下移动BTN使用按钮。

你应该写代码:

private void Grid_OnKeyDown(object sender, KeyRoutedEventArgs e) 
    { 
     if (e.Key == VirtualKey.Left) 
     { 
      Move(-1, 0); 
     } 
     else if (e.Key == VirtualKey.Right) 
     { 
      Move(1, 0); 
     } 
     else if (e.Key == VirtualKey.Up) 
     { 
      Move(0, -1); 
     } 
     else if (e.Key == VirtualKey.Down) 
     { 
      Move(0, 1); 
     } 
    } 

    private void Move(int x, int y) 
    { 
     var temp = btn.RenderTransform as CompositeTransform; 
     temp.TranslateX += x; 
     temp.TranslateY += y; 
    } 

    private void Button_OnClick(object sender, RoutedEventArgs e) 
    { 
     var b = sender as Button; 
     if (b != null) 
     { 
      string str = b.Content as string; 
      if (str == "up") 
      { 
       Move(0, -1); 
      } 
      else if (str == "down") 
      { 
       Move(0, 1); 
      } 
      else if (str == "left") 
      { 
       Move(-1, 0); 
      } 
      else if (str == "right") 
      { 
       Move(1, 0); 
      } 
     } 
    } 
} 

您应该使用Grid.KeyDown拿到钥匙,并BTN移动。

如果没有代码的概念,请和我说说话。

+0

非常感谢! – K4tn1x

相关问题