Direct input probleme avec le temps d'enfoncement des touches

cs_DarklordBioopo Messages postés 8 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 4 février 2006 - 28 janv. 2006 à 20:12
cs_DarklordBioopo Messages postés 8 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 4 février 2006 - 29 janv. 2006 à 10:45
Boujour,


J'ai un petit probleme, quand j'utilise direct input pour lire a partir du clavier, quand j'appuie trop longtemp sur une des fleches de deplacement, l'objet ne se deplace plus aussi vite. il est meme lent.

Que faut-il faire.

Merci.
bioopo

2 réponses

Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
28 janv. 2006 à 22:51
Je ne vois pas d'ou peut venir ton probleme, j'ai toujours utilisé DInput sans aucun problème.

Voici une partie du code qui gere le clavier.
Si tu as besoin des initialisations, fait le moins savoir.

/*-------------------*/
// Manages keyboard //
/*-------------------*/
void CInput::KeyboardManager(float delta_time)
{
if (lpKeyboardDevice->GetDeviceState(sizeof(keyBuffer),(LPVOID)&keyBuffer) == DIERR_INPUTLOST)
{
if (lpKeyboardDevice->Acquire() == DI_OK)
lpKeyboardDevice->GetDeviceState(sizeof(keyBuffer),(LPVOID)&keyBuffer);
}

char *pkeyBuffer = (char*)keyBuffer;

//si on a appuyé sur la touche de gauche
if (KEYDOWN(pkeyBuffer, DIK_LEFT))
{
}
//si on a appuyé sur la touche de droite
if (KEYDOWN(pkeyBuffer, DIK_RIGHT))
{
}
//si on a appuyé sur la touche haut
if (KEYDOWN(pkeyBuffer, DIK_UP))
{
}
//si on a appuyé sur la touche bas
if (KEYDOWN(pkeyBuffer, DIK_DOWN))
{
}
}
0
cs_DarklordBioopo Messages postés 8 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 4 février 2006
29 janv. 2006 à 10:45
merci mais ce code c'est ce que j'ai.

voila le code qui gere mon clavier :

int CKey::OnFrameMove(LPDIRECTINPUTDEVICE8 pDIDevice)


{


m_pDIDevice = pDIDevice;



int Key = 0;


HRESULT hr;


hr = m_pDIDevice->GetDeviceState(
sizeof(buffer),(LPVOID)&buffer);



if FAILED(hr)


{


hr = m_pDIDevice->Acquire();



while( hr == DIERR_INPUTLOST )


hr = m_pDIDevice->Acquire();


}


m_pDIDevice->GetDeviceState(
sizeof(buffer),(LPVOID)&buffer);



//rectangle a gauche



if (KEYDOWN(buffer, DIK_LEFT))


Key = 1;



else
if (KEYDOWN(buffer, DIK_RIGHT))


Key = 2;



return Key;


}

merci
0