操作的には一度しかボタンを押していないのに、入力は延々と受け付けられ
本来ならば、一段目、二段目、三段目とキーを押すたびに実行したい処理が
一段目から三段目までを一度押しただけで一気に実行されてしまう問題で悩んでいた。
様々なフラグを噛ませ無駄な処理を実装してきた。
本当に私は頭が固いと思う。
ボタンを一度押したら次はボタンが離されるまで処理を返さない関数を書いた。
本当に私は頭が固いと思う・・・・・・。
int InputCheck::Key[256];
//キーの状態を返却する
//引数:キーナンバー
int InputCheck::ReturnInputKey(int input){
static int bInput;
char tmpKey[256]; // 現在のキーの入力状態を格納する
GetHitKeyStateAll( tmpKey ); // 全てのキーの入力状態を得る
for( int i=0; i<256; i++ ){
if( tmpKey[i] != 0 ){ // i番のキーコードに対応するキーが押されていたら
Key[i] = 1; // 加算
} else { // 押されていなければ
Key[i] = 0; // 0にする
}
}
//ボタンが離された押し下げフラグを解除する
if(Key[input] == 0){
bInput = 0;
}
//ボタンが押された一度目のみ1を返す
if(Key[input] == 1 && bInput == 0){
bInput = 1;
return 1;
}else{
return 0;
}
}