游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1470|回复: 4

请问诸位,怎样只检测一次keypress?

[复制链接]

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2005-10-30 08:06:00 | 显示全部楼层 |阅读模式
我想实现一个小人的行走
(用几幅图片的切换)
当按下a键时向左走,图片开始切换,可是过了半秒中后就不停的切换前两副图片了
Private Sub Pm_KeyPress(KeyAscii As Integer)
Dim a
If a = 0 Then
If KeyAscii = 97 Then
Im.Top = -720
Im.Left = 0
fangxiang = -720
Timer1.Interval = 100
End If
a = 1
End If
End Sub
Private Sub Timer1_Timer()
Im.Top = fangxiang
If Im.Left = -960 Then
Im.Left = 0
Else: Im.Left = Im.Left - 480
End If
End Sub
这里有编译好的程序

sf_200510308620.exe

72 KB, 下载次数:

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2005-10-30 12:24:00 | 显示全部楼层

Re:请问诸位,怎样只检测一次keypress?

方法1:检测windows消息
方法2:DirectInput缓冲模式

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2005-10-30 13:03:00 | 显示全部楼层

Re:请问诸位,怎样只检测一次keypress?

呵呵,你用计时器就可以啦。

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2005-10-31 00:03:00 | 显示全部楼层

Re:请问诸位,怎样只检测一次keypress?

原因在这里:
If Im.Left = -960 Then
Im.Left = 0
Else: Im.Left = Im.Left - 480

Im.Left 取值,在960的时候马上变成0。
他的值如下:
0,-480,0(本来是-960,但又If Im.Left = -960 Then Im.Left = 0)
0,-480,0,0,-480,0,0,-480,0,0,-480,0,0,-480,0,0,-480,0,

只有 a=0(放开A键),Im.Left才有可能是-960

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2005-10-31 11:05:00 | 显示全部楼层

Re:请问诸位,怎样只检测一次keypress?

不对,好象不是这个原因。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 11:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表