游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1852|回复: 2

[求助]有关菜单的问题!!

[复制链接]

13

主题

48

帖子

106

积分

注册会员

Rank: 2

积分
106
发表于 2006-11-14 17:11:00 | 显示全部楼层 |阅读模式
我在做一个游戏的菜单.用上下键来选择按钮.按一下,调用下面一个按钮的选中状态图.
可是无法控制按下的力度.有时候按一下,不是选种下面的一个按钮,而是从当前选种按钮刷新好几下到下面的某一个按钮,
怎么办?请指教......... (初学者,算法很烂,要是有更好的方法,请大家提出来.谢谢了)

void Load_Buttons(void)
{
DDraw_Fill_Surface(lpddsback, 0);
DDraw_Fill_Surface(lpddsprimary, 0);

DInput_Read_Keyboard();

Load_Bitmap_File(&bitmap8bit, "OUTART/mainmenu8.bmp");

if(keyboard_state[DIK_DOWN])
{   
if(menu_down++>3)
menu_down=0;
       
}

if(menu_down==1)
{

Load_Bitmap_File(&bitmap8bit, "OUTART/menuinst8.bmp");

}

if(menu_down==2)
{

Load_Bitmap_File(&bitmap8bit, "OUTART/menuexit8.bmp");

}
Set_Palette(bitmap8bit.palette);

DDraw_Lock_Primary_Surface();
Copy_Screen(bitmap8bit.buffer,primary_buffer, primary_lpitch, 0);

if(keyboard_state[DIK_RETURN])
{
        if(menu_down==0){
   
        DDraw_Unlock_Primary_Surface();

        Unload_Bitmap_File(&bitmap8bit);

        Screen_Transitions(SCREEN_DARKNESS,NULL,0);

        DDraw_Fill_Surface(lpddsback, 0);
        DDraw_Fill_Surface(lpddsprimary, 0);
        game_state = GAME_STATE_RESTART; }
        if(menu_down==1){
    ......................
        }
        if(menu_down==2){
    ......................               
        }

}
} [em7] [em7] [em7]

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2006-11-14 17:42:00 | 显示全部楼层

Re:[求助]有关菜单的问题!!

key的状态通常分: IsPressed、IsClicked、IsDblClicked
你的问题在于只处理了IsPressed,所以当按下一个键时DirectInput产生n个KeyDown,于是出现你所见到的:  "可是无法控制按下的力度.有时候按一下,不是选种下面的一个按钮,而是从当前选种按钮刷新好几下到下面的某一个按钮"

而click的意义在于1次down+1次up算做1次有效的click,所以你应该记录按键信息,具体算法请先自行思考
如果click完成,再试着实现dblclick

期待你早日实现,然后大家再一起探讨更有效的实现算法。

4

主题

66

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2006-11-16 11:18:00 | 显示全部楼层

Re:[求助]有关菜单的问题!!

真是虾米问题都回答得这么详细挖....
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 20:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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