gpt4 book ai didi

c++ - 如何在不阻塞 C++ Allegro 中的整个程序的情况下使文本闪烁?

转载 作者:搜寻专家 更新时间:2023-10-31 02:07:53 25 4
gpt4 key购买 nike

bool running = true;

int width = al_get_display_width(display);
while (running) {

for (;;) {
al_clear_to_color(al_map_rgb(255, 255, 255));
al_draw_bitmap(bitmap, 0, 0, 0);
al_draw_text(font, al_map_rgb(0, 0, 0), 760, 375, 0, "Play (Spacebar)");
al_flip_display();
al_rest(1.5);

al_clear_to_color(al_map_rgb(255, 255, 255));
al_draw_bitmap(bitmap, 0, 0, 0);
al_flip_display();
al_rest(0.5);
}

ALLEGRO_EVENT event;
al_wait_for_event(queue, &event);
if (event.type == ALLEGRO_EVENT_DISPLAY_CLOSE) {
running = false;
}
}

如您所见,我有一个无限循环,它阻塞了整个程序以使文本闪烁。问题是我如何进行闪烁,以便其他事情像后续事件一样继续工作(当用户点击 X 时窗口关闭)

最佳答案

最好的方法是在绘制文本时检查要绘制的状态(闪烁或关闭)。这可以从当前时间得出。像这样的东西:

while (running) {
al_clear_to_color(al_map_rgb(255, 255, 255));
al_draw_bitmap(bitmap, 0, 0, 0);

if (fmod(al_get_time(), 2) < 1.5) { // Show the text for 1.5 seconds every 2 seconds.
al_draw_text(font, al_map_rgb(0, 0, 0), 760, 375, 0, "Play (Spacebar)");
}

al_flip_display();

// Handle events in a non-blocking way, for example
// using al_get_next_event (not al_wait_for_event).
}

关于c++ - 如何在不阻塞 C++ Allegro 中的整个程序的情况下使文本闪烁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48233825/

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