C#对游戏手柄的编程开发-API篇(2)
2009-03-29 08:22:06 来源:WEB开发网但当我们的操作进入“轮循”后,如果也是直接joyGetPostEx就处理的话也一样会碰到篇头所说的那个糟糕问题 !因为不管是“主动方式”还是“被动方式”都是一样只能得到游戏手柄按钮当前的状态(按下或未按下)。那怎么解决呢?
解决按钮重复状态的问题
解决这个问题,如果理清了思路,其实也是很简单的方法。
我们通过API得到的是游戏手柄按钮当前的状态(被按下或未按下)。因此我们可以在“轮循”里,每当监视到游戏手柄在某次时间有某些按钮是处于“按下”状态时,就记录此次被按下的按钮号,这样当下一次“轮循”操作时,如果也监视到有按钮按下,则通过与上一次按下的按钮对比,如果还是相同的按钮,则表明本次按钮还是继续上次的按下状态,那就不再需要向程序里发出消息通知了。而如果不相同,则发出新的按钮按键通知,并记录本次按下的按钮号。
伪代码如下:
previousButtons = 无;
//死循环,进入轮循
while(true){
if(joyGetPosEx(手柄号,ref joyInfo) == 成功){
JoyButtons buttons = 取得当前按下的按钮(joyInfo);
if(buttons != 无){
if(buttons != previousButtons){
//本次按下的按钮不同于上次按下的按钮.所以进行通知
OnClick(buttons);
//记录本次按下的按钮
previousButtons = buttons;
}
}
}
暂停uPeriod毫秒;
}
- ››编程实例 一个简单的智能感知效果
- ››游戏定位成牵引Android发展的火车头
- ››游戏场景烘焙贴图制作
- ››游戏植物大战僵尸 iPhone 版9天销售额超100万美元...
- ››游戏开发包 iPhone cocos2d 初体验
- ››游戏三维怪物施法特效教程
- ››游戏人生Silverlight(2) - 趣味钢琴[Silverlight ...
- ››游戏人生Silverlight(3) - 打苍蝇[Silverlight 2....
- ››游戏人生Silverlight(4) - 连连看[Silverlight 2....
- ››游戏人生Silverlight(5) - 星际竞技场[Silverligh...
- ››游戏《封神榜》人物纣王3DMAX制作全过程
- ››编程快捷删除文档中多余的空行
更多精彩
赞助商链接