Я хочу сделать программу Allegro 5, где курсор должен изменить внешний вид при нажатии кнопки мыши. Насколько я понимаю, это утверждение events.type!=ALLEGRO_EVENT_MOUSE_BUTTON_UP
никогда не становится ложным. Но я не понимаю, почему, поскольку после отпускания кнопки цикл не останавливается. Можете ли вы сказать мне, где моя ошибка, и есть ли лучший альтернативный способ?Allegro кнопка мыши выпущена
while(loop){
al_clear_to_color(al_map_rgb(0,0,0));
ALLEGRO_EVENT events;
al_wait_for_event(event_queue, &events);
if(events.type == ALLEGRO_EVENT_DISPLAY_CLOSE){
loop=false;
}
if(events.type == ALLEGRO_EVENT_MOUSE_AXES){
x=events.mouse.x;
y=events.mouse.y;
buffer = released;
}
if(events.type==ALLEGRO_EVENT_MOUSE_BUTTON_DOWN)
while (events.type!=ALLEGRO_EVENT_MOUSE_BUTTON_UP){
x=events.mouse.x;
y=events.mouse.y;
al_draw_bitmap(pressed, x , y , NULL);
al_flip_display();
al_clear_to_color(al_map_rgb(0 , 0 , 0));
}
al_draw_bitmap(released, x , y , NULL);
al_flip_display();
}
Я попробовал этот метод, но проблема в том, что он отображает только нажатое изображение курсора на секунду, и когда я меняю положение мыши, не отпуская кнопку, он снова отображает снятое изображение ... – Sam379
@ Sam379 Мой код не РЕШИТ, но пример того, как более правильно структурировать ваши события. В этом случае вы должны внести переменную 'change'' static'. –
Хорошо, спасибо вам большое – Sam379