请问:如何在c#中获得游戏中八方向键的效果?

huouh 2008-07-10 02:51:30
我试着把按键加到连个线程,查了资料但还不知道怎么下手!
请高手指点下,不胜感激!
...全文
90 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nodman 2008-07-15
  • 打赏
  • 举报
回复
不用谢。
有个建议,为每个键单独启用不同定时器。并且键按下时立即启动该定时器,键放开立即停止该定时器。

如果统一用一个定时器处理所有的按键,同步会有问题,
‘真实感’可能不够强烈。

1分?
huouh 2008-07-12
  • 打赏
  • 举报
回复
问题解决了!
真的很感谢 Mr.nodman !
……
bool moveL = false;
bool moveU = false;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Left)
{
moveL = true;
}
if (e.KeyCode == Keys.Up)
{
moveU = true;
}

}

private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Left)
{
moveL = false;
}
if (e.KeyCode == Keys.Up)
{
moveU = false;
}
}

private void timer2_Tick(object sender, EventArgs e)
{
if (moveL)
{
this.pictureBox1.Left -= 3;
if (this.pictureBox1.Left<=0)
{
this.pictureBox1.Left = 0;
}
}

if (moveU)
{
this.pictureBox1.Top -= 3;
if (this.pictureBox1.Top <= 0)
{
this.pictureBox1.Top = 0;
}
}
}
huouh 2008-07-12
  • 打赏
  • 举报
回复
非常感谢!
我去具体实现下!不过我还没有重写过事件!
先找个例子去参考下 o(∩_∩)o...
nodman 2008-07-11
  • 打赏
  • 举报
回复
嗯,明白了。
这个情况,你要重写2个事件:KeyDown+KeyUp
当一个键按下的时候,记住并且定时触发其功能,比如向右移动,直到
KeyUp中发现这个键放开,才停止移动。

定时器的触发间隔时间需要考虑。

这样,才可能处理多个同时按下的键。
nodman 2008-07-10
  • 打赏
  • 举报
回复
“我试着把按键加到连个线程”,语句不通顺,看不明白
你是要做游戏?8方向键是一个按键还是8个?

110,643

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧