Direct input probleme avec le temps d'enfoncement des touches

Signaler
Messages postés
8
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
4 février 2006
-
Messages postés
8
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
4 février 2006
-
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

Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
1
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))
{
}
}
Messages postés
8
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
4 février 2006

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