回 帖 发 新 帖 刷新版面

主题:急急求解->坦克为什么移动不顺畅??????

[em52]在编坦克游戏时遇到了坦克移动不顺畅的问题,每次换移动方向时坦克总要顿一顿再移动感觉很不爽,不知何故,为什么呢?怎么解决呢?
// 坦克Dlg.cpp :
void CMy2Dlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
   switch (nChar)
   {                
    case 'W':
        fangwei=1;
        move_ud-=1;
        break;
    case 'S':
        fangwei=2;
        move_ud+=1;
        break;
    case 'A':
        fangwei=3;
        move_lr-=1;
        break;
    case 'D':
        fangwei=4;
        move_lr+=1;
        break;
    default:
        break;                
   }  
    //贴图类函数调用        
    bt.MapPicture(mapp ,move_lr ,move_ud ); //地图       
    bt.CarPicture(carp,fangwei,move_lr, move_ud);  //坦克
    dc.StretchB(0,0,rect.right,rect.bottom,bt.cdc1,0,0,256,240,SRCCOPY);  // 帖到屏幕             

    CDialog::OnKeyDown(nChar, nRepCnt, nFlags);                
}

回复列表 (共4个回复)

沙发

光从你的代码上看不出什么问题。
你用的是 API 还是 DX?若是 API 可能会有速度方面的问题。

板凳

  还没学DX,用的是API来做贴图操作的。按键后坦克的起步或换移动方向时都会顿一下以后的移动倒满顺畅的。请问不用DX就解决不了这个问题吗?
  还有啊请问猪头王子,怎样上传作品与大家共同研究呢?
  我是新手自学VC刚半年,请大家多指教,不胜感谢!

3 楼

onkeydown是从按下开始发出1个,停顿一段时间之后又开始快速连发的信号。
直接使用它控制移动得到的就是楼主的结果。

改为:
onkeydown时记下一个方向的标志,onkeyup时去掉标志。
在定时器或者主循环里去访问标志并做移动。

4 楼

哇!原来如此,感激不尽!谢谢高人!

我来回复

您尚未登录,请登录后再回复。点此登录或注册