gpt4 book ai didi

c++ - Allegro,输出鼠标点击

转载 作者:太空宇宙 更新时间:2023-11-04 12:00:51 25 4
gpt4 key购买 nike

我想在图形窗口中打印出我的鼠标坐标,当用户点击它时,应该会出现一条消息“clicked”。但问题是当用户点击它时,我收到了大约 5-10 条消息,而不是 1 条消息。我知道这可能是因为我松开按钮的速度有多快。有没有办法只打印一次?

#include <allegro.h>
#include <iostream>

int main(){

allegro_init();
install_keyboard();
install_mouse();
set_color_depth(32);
set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);

BITMAP *pic = load_bitmap("mouse.bmp",NULL);
BITMAP *buffer = create_bitmap(640,480);

int x = 0, y = 0;

while(!key[KEY_ESC]){
blit(buffer, screen, 0,0,0,0, buffer->w,buffer->h);

draw_sprite(buffer, pic, mouse_x, mouse_y);
blit(buffer, screen, 0,0,0,0, buffer->w, buffer->h);
clear_bitmap(buffer);

if(mouse_x!=x && mouse_y!=y){
std::cout<<mouse_x<<":"<<mouse_y<<std::endl;
}
if(mouse_b&1){
std::cout<<std::endl<<">>CLICKED<<"<<std::endl;
}

x=mouse_x, y=mouse_y;
}

destroy_bitmap(pic);
destroy_bitmap(buffer);
return 0;
}
END_OF_MAIN()

最佳答案

mouse_b 是否保存鼠标的状态?如果是这样,无论鼠标按下多长时间,它都可以每帧输出一次消息。

与您处理x 的方式类似,y 存储按钮的先前状态并且仅在状态更改时发送消息,这应该只给您 1 条消息。

关于c++ - Allegro,输出鼠标点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14173406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com