⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keyinput.cpp

📁 一个3D的保龄球的源代码
💻 CPP
字号:
#include "keyinput.h"
#include "engine.h"

// constructor , init keyStatus
CKeyinput::CKeyinput() 
{
	ResetAll();
}

CKeyinput::~CKeyinput() 
{
}

void CKeyinput::ResetAll()
{
	m_keysPressed = 0;
	m_KeysReleased = 0;
	
	m_KeysDown = 0;
	m_KeysUp = 0;
	m_KeysHold = 0;
	m_KeysState = 0;
	MEMSET(m_KeysHoldCnt, 0, sizeof(short)*15);
}

void  CKeyinput::HandleKey(AVKType vKey, AEEEvent Code) 
{
	if(Code == EVT_KEY_PRESS)
	{
		m_keysPressed	|= gkConvert(vKey);
	}
	else
	{
	  m_KeysReleased	|= gkConvert(vKey);
	}

}

//update key status every frame, clear temporary status
void CKeyinput::updateKey()
{
	//the key was pressed are belong to key down
	m_KeysDown = m_keysPressed;
	m_KeysUp = m_KeysReleased;
	
	//the key pressed and old key hold but not up belong to key hold
	m_KeysHold = (m_keysPressed | m_KeysHold) & (~m_KeysReleased);

	for (int i=0; i<15; i++)
	{
		if (m_KeysHold & (1>>i))
			m_KeysHoldCnt[i]++;
		else
			m_KeysHoldCnt[i]=0;
	}
	m_keysPressed = 0;
	m_KeysReleased = 0;
}

int CKeyinput::gkConvert(int keyCode) 
{
    switch (keyCode) 
	{
        case AVK_UP:
            return gk_UP;
        case AVK_DOWN:
            return gk_DOWN;
        case AVK_LEFT:
            return gk_LEFT;
        case AVK_RIGHT:
            return gk_RIGHT;
        case AVK_SELECT:
#ifdef T720
			return gk_RSOFT;
#else
            return gk_MSOFT;
#endif
        case AVK_SOFT1:
            return gk_LSOFT;
        case AVK_SOFT2:
            return gk_RSOFT;
        case AVK_0:
            return gk_NUM0;
        case AVK_1:
            return gk_NUM1;
        case AVK_2:
            return gk_NUM2;
        case AVK_3:
            return gk_NUM3;
        case AVK_4:
            return gk_NUM4;
        case AVK_5:
            return gk_NUM5;
        case AVK_6:
            return gk_NUM6;
        case AVK_7:
            return gk_NUM7;
        case AVK_8:
            return gk_NUM8;
        case AVK_9:
            return gk_NUM9;
        case AVK_STAR:
            return gk_STAR;
        case AVK_POUND:
            return gk_POUND;
		case AVK_CLR:
#ifdef T720
			return gk_LSOFT;
#else
			return gk_BACK;
#endif
		case AVK_SEND:
			return gk_SEND;
        default:
            return 0;
    }
}

// end file

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -