我正在开发一个小游戏,其中有椭圆作为目标和文本块在这些椭圆显示一个字母表(每3秒改变)。
我希望实现这样一种功能:用户按下键盘上的字母表,如果这与显示在特定文本块上的字母表相匹配,将开始一个名为"t1_hit“的情节提要(动画)。
我试过以下几种方法,但都不起作用。
XAML(仅文本块部分):
<TextBlock x:Name="txbTarget1" Height="26" Canvas.Left="571" TextWrapping="Wrap" Canvas.Top="92" Width="23" FontWeight="Bold" FontSize="16" Foreground="#FF6BE824" RenderTransformOrigin="0.5,0.5" KeyDown="txbTarget1_KeyDown" ><TextBlock.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</TextBlock.RenderTransform><Run Language="en-in"/></TextBlock>
C#:
string k = "";
private void txbTarget1_KeyDown(object sender, KeyEventArgs e)
{
k = txbTarget1.Text;
KeyConverter x = new KeyConverter();
Key kinput = (Key)x.ConvertFromString(k);
if (e.Key == kinput)
{
Storyboard h1 = this.FindResource("t1_Hit") as Storyboard;
h1.Begin();
}
}
任何帮助都是非常感谢的。谢谢
发布于 2015-09-17 14:32:23
TextBlock
无法获得焦点,因此无法捕获键盘输入。
您必须使用元素,这是焦点。例如,窗口或用户控件:
public void Window_KeyDown(object sender, KeyEventArgs e)
{
k = txbTarget1.Text;
KeyConverter x = new KeyConverter();
Key kinput = (Key)x.ConvertFromString(k);
if (e.Key == kinput)
{
Storyboard h1 = this.FindResource("t1_Hit") as Storyboard;
h1.Begin();
}
}
来自MSDN:
UIElement.KeyDown 当焦点集中在此元素上时,当按下键时发生。 https://msdn.microsoft.com/en-us/library/system.windows.uielement.keydown%28v=vs.110%29.aspx
https://stackoverflow.com/questions/32632835
复制相似问题