Vb.net 停止在VB中重复选择案例
很抱歉,标题含糊不清,我不知道如何简明扼要地解释这个问题 我这里有一段代码:Vb.net 停止在VB中重复选择案例,vb.net,Vb.net,很抱歉,标题含糊不清,我不知道如何简明扼要地解释这个问题 我这里有一段代码: Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown Select Case e.KeyCode Case Keys.Left pBox1.Visible = False
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
Select Case e.KeyCode
Case Keys.Left
pBox1.Visible = False
pBox3.Visible = False
pBox2.Visible = True
Me.pBox1.Left -= 3
Me.pBox2.Left -= 3
Me.pBox3.Left -= 3
Me.pBox4.Left -= 3
Case Keys.Right
pBox1.Visible = False
pBox3.Visible = False
pBox2.Visible = True
Me.pBox1.Left += 3
Me.pBox2.Left += 3
Me.pBox3.Left += 3
Me.pBox4.Left += 3
Case Keys.E
pBox2.Visible = False
pBox3.Visible = False
pBox1.Visible = True
Case Keys.Up
pBox4.Visible = True
pBox3.Visible = False
pBox2.Visible = False
pBox1.Visible = False
Me.pBox4.Top -= 3
Me.pBox3.Top -= 3
Me.pBox2.Top -= 3
Me.pBox1.Top -= 3
End Select
End Sub
这很好,不同的PBOX代表我想要移动的不同图片框。一切正常,图片框向左/向右/向上移动,但我想阻止“向上”框重复(我让一个视频游戏角色向左/向右/跳跃),这样玩家就不能只是漂浮在空中。我希望“Case Keys.Up”只重复一次,这样它就像一个合适的跳跃机械师一样工作,或者类似的东西。有人知道怎么做吗?任何答案都将不胜感激,提前感谢
-亚伦你的问题比你想象的要复杂得多。问题是,你不需要一段代码。您需要一种新的方式来查看代码 您需要的是一个名为“States”的设计模式 ,只为你 为了帮助你开始,这里有一些建议。你的角色可以做很多事情。你可以把这些东西分成几个州。也许你的角色可以无所事事,走、跑、跳、摔、死。所有这些都是状态,通过强制执行这些状态,你就有了一个面具,可以“改变规则”,你的角色在任何情况下都会遵守这些规则。例如,角色的每个状态都可能有不同的动画。它的最大速度可能也会有所不同。也许他在某些情况下变得脆弱或不可战胜 通过强制状态,您可以围绕角色的行为创建一个严格的结构,这既易于自定义,也难以对其进行例外。大多数游戏经常使用这种模式
很好的编程 你的问题比你想象的要复杂。问题是,你不需要一段代码。您需要一种新的方式来查看代码 您需要的是一个名为“States”的设计模式 ,只为你 为了帮助你开始,这里有一些建议。你的角色可以做很多事情。你可以把这些东西分成几个州。也许你的角色可以无所事事,走、跑、跳、摔、死。所有这些都是状态,通过强制执行这些状态,你就有了一个面具,可以“改变规则”,你的角色在任何情况下都会遵守这些规则。例如,角色的每个状态都可能有不同的动画。它的最大速度可能也会有所不同。也许他在某些情况下变得脆弱或不可战胜 通过强制状态,您可以围绕角色的行为创建一个严格的结构,这既易于自定义,也难以对其进行例外。大多数游戏经常使用这种模式
很好的编程 这个问题与
选择案例
无关。问题是如何检测KeyDown
事件为Up
键引发了多少次。当检测到该密钥时,您该如何做?查找所需信息的一个重要部分是确定所需的信息,如果包含不相关的参数,则查找相关信息会变得更加困难。那么,对您来说,真正重要的是什么?自上次KeyDown
事件以来是否已引发keydup
事件?如果是这样,那么很明显,您至少需要处理KeyUp
事件。现在考虑确定你需要确定的逻辑。好的,对不起,我不知道它不是选择的情况。但我想你误解了我的问题。我想要的是玩家按下向上箭头,让屏幕上的角色向上移动,然后向下移动。现在只要玩家按住向上箭头,角色就开始漂浮在空中。这与键关闭事件无关抱歉,如果我完全是愚蠢的,我几乎完全知道vb和堆栈溢出。很抱歉您可能希望将KeyPress
事件与KeyDown
事件结合或代替一起查看。此问题与Select Case
无关。问题是如何检测KeyDown
事件为Up
键引发了多少次。当检测到该密钥时,您该如何做?查找所需信息的一个重要部分是确定所需的信息,如果包含不相关的参数,则查找相关信息会变得更加困难。那么,对您来说,真正重要的是什么?自上次KeyDown
事件以来是否已引发keydup
事件?如果是这样,那么很明显,您至少需要处理KeyUp
事件。现在考虑确定你需要确定的逻辑。好的,对不起,我不知道它不是选择的情况。但我想你误解了我的问题。我想要的是玩家按下向上箭头,让屏幕上的角色向上移动,然后向下移动。现在只要玩家按住向上箭头,角色就开始漂浮在空中。这与键关闭事件无关抱歉,如果我完全是愚蠢的,我几乎完全知道vb和堆栈溢出。很抱歉您可能希望结合或代替KeyDown
事件查看KeyPress
事件。谢谢!那帮了大忙!我只想补充一点:如果你真的想做一个游戏,国家通常是你的选择。另一方面,如果这是一个忍者编码的家庭作业,您可以使用布尔值来知道您当前是否正在跳转,并避免使代码进一步复杂化。祝你好运谢谢Laancelot!那帮了大忙!我只想补充一点:如果你真的想做一个游戏,国家通常是你的选择。另一方面,如果这是一个忍者编码的家庭作业,您可以使用布尔值来知道您当前是否正在跳转,并避免使代码进一步复杂化。祝你好运