http://dixq.net/g/sp_06.html を見ながらメニューが作れたので、どうしたらもっと使いまわせる仕様になるのかなと思い、
キーボードとマウスの状態についてのクラスを作成したところ、期待した通りの動作をしてくれませんでした。
http://dixq.net/forum/viewtopic.php?f=3&t=11602
ここにあったように、
int Keys::updateKey() {
// 現在のキーの入力状態を格納する
GetHitKeyStateAll(tmpKey); // 全てのキーの入力状態を得る
nextFrame(); //マウスの入力状態をアップデートする
for (int i = 0; i<256; i++){
if (tmpKey[i] != 0){ // i番のキーコードに対応するキーが押されていたら
Key[i]++; // 加算
}
else { // 押されていなければ
Key[i] = 0; // 0にする
}
}
return 0;
}
void Keys::nextFrame() { //フレーム遷移
int x, y;
prevMouse = mouse;
mouse = GetMouseInput();
if (mouse ^ prevMouse & mouse & MOUSE_INPUT_LEFT){
status = OFF_ON;
}
if (mouse ^ prevMouse & prevMouse & MOUSE_INPUT_LEFT){
status = ON_OFF;
}
GetMousePoint(&x, &y);
coord.real(x);
coord.imag(y);
}
int Keys::getMouseWithStatus(buttonState x) {
switch (x){
case OFF_ON:
if (status == OFF_ON )
{
return 1;
}
case ON_OFF:
if (status == ON_OFF )
{
return 1;
}
default :
return 0;
}
}
boost::shared_ptr<Keys> key(new Keys);
//boost::shared_ptr<Keys> key = Keys::CreateInstance();
key->updateKey();
// key->getKeyWithStatus(MOUSE_INPUT_LEFT, ON_OFF);
if (key->mouseOnArea(225, 425, 150, 196))
{
menunum = 1;
if (key->getMouseWithStatus(ON_OFF))
{
mSceneChanger->ChangeScene(eScene_ModeSelect);
}
}
}