ボタンの処理について
Posted: 2017年12月23日(土) 21:32
こんばんは
visual C++(DXライブラリ)で作成中のゲームのマウスでクリックするタイプのボタンの処理が思いつかないのでご教授してほしいです
クリック(マウスのボタンを押した瞬間)に反応するタイプのものではなく
クリックした後(マウスのボタンを押して離した瞬間)に反応するものを作りたいと考えています
全ての使用を説明すると大変なのですがよくゲームに使われている方法です
ボタンをクリックしてもボタンから離れた場所までカーソルを移動してからクリックを解除すればもちろん反応しませんし
ボタンとは関係ない場所でクリックし、ボタンの上までカーソルを移動し、クリックを解除した場合も反応してはいけません
以下の様な関数を作成したのですがこれだとボタンをクリックした瞬間に反応してしまいます
また関数では複数のボタンを設置した場合どのボタンに対しクリックされていたのかが分からないのでクラスなどを使って
関数を作ればいいのかなと思っているのですが、具体的な方法がおもいつきません
visual C++(DXライブラリ)で作成中のゲームのマウスでクリックするタイプのボタンの処理が思いつかないのでご教授してほしいです
クリック(マウスのボタンを押した瞬間)に反応するタイプのものではなく
クリックした後(マウスのボタンを押して離した瞬間)に反応するものを作りたいと考えています
全ての使用を説明すると大変なのですがよくゲームに使われている方法です
ボタンをクリックしてもボタンから離れた場所までカーソルを移動してからクリックを解除すればもちろん反応しませんし
ボタンとは関係ない場所でクリックし、ボタンの上までカーソルを移動し、クリックを解除した場合も反応してはいけません
以下の様な関数を作成したのですがこれだとボタンをクリックした瞬間に反応してしまいます
//指定された場所がマウスでクリックされたかどうかチェックする (0 接触なし、1 接触開始、2 接触中、3 クリック開始、4 クリック中
int ClickBox(int x1, int y1, int x2, int y2, int draw_color) {
if (draw_color != 0) DrawBox_(x1, y1, x2, y2, draw_color, FALSE);
if (mouse_x >= x1 && mouse_x <= x2 && mouse_y >= y1 && mouse_y <= y2) {
if (draw_color != 0) DrawBox_(x1, y1, x2, y2, col.p_blue, FALSE);
if (mouse_xx < x1 || mouse_xx > x2 || mouse_yy < y1 || mouse_yy > y2) return 1;
if (GetMouse(MOUSE_LEFT) == 1) return 3; //クリック開始
if (GetMouse(MOUSE_LEFT) > 1) return 4; //クリック中
return 2; //接触中
}
return 0;
}
関数を作ればいいのかなと思っているのですが、具体的な方法がおもいつきません