ページ 11

GetHitKeyStateAll 関数が動作しない?

Posted: 2011年7月23日(土) 18:13
by dic
ちょくちょく使わせてもらってます
今度はタイトルのとおり GetHitKeyStateAll2 関数が動作しません(?)

下はソースコードです

コード:

{
	//	入力制御
	char	key[256];
	GetHitKeyStateAll2( key );
	if( key[KEY_INPUT_DOWN] == 1 )
		m_select += 1;
	if( key[KEY_INPUT_UP] == 1 )
		m_select -= 1;
	if( m_select < 0 )
		m_select = 2;
	if( m_select > 2 )
		m_select = 0;
}

//================================================================
void	GetHitKeyStateAll2( char *key )
{
    static  char    key_count[256]; //  カウントアップ用変数
 
    memset( key, 0, sizeof(char[256]) );
    GetHitKeyStateAll( key );
 
    int i;
    for( i=0; i<256; i++ )
    {
        if( key[i] > 0 )
            key_count[i]++;
        else
            key_count[i] = 0;
    }
 
    //  代入する
    for( i=0; i<256; i++ )
        key[i] = key_count[i];
}

ここで、キーボードの上、下キーを押しても
6,8行目の m_select += 1; m_select -= 1;
のところに処理が流れません

また、簡単なところでつまづいているような気がします
どこらへんでつまづいているのでしょうか?
情報が不足していたら追加します

Re: GetHitKeyStateAll 関数が動作しない?

Posted: 2011年7月23日(土) 18:56
by Ciel

コード:

for( i=0; i<256; i++ )
        key[i] = key_count[i];
↑この処理は必要あるんですか?

Re: GetHitKeyStateAll 関数が動作しない?

Posted: 2011年7月23日(土) 18:57
by みけCAT
必要ではないかと思います。

Re: GetHitKeyStateAll 関数が動作しない?

Posted: 2011年7月23日(土) 19:29
by dic
>>Cielさん
>>みけCATさん
返答ありがとうございます

色々調べたとこと、GetHitKeyStateAll2 を1フレームで2回以上呼び出していてて、
それで、1フレームで カウントが2回されていてて key[..] == 1 になっていないことが分かりました
なので、char key[256] 変数をグローバル化し、1フレームで、GethitKeyStateAll2 関数は
一回のみコールするということで問題が解決できました