====== Différences ====== Ci-dessous, les différences entre deux révisions de la page.
allegro:events [2011/12/05 00:21] mrhide [Walk through] |
allegro:events [2012/06/29 17:01] (Version actuelle) mrhide [Events] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ===== Events ===== | + | ===== Allegro — Events ===== |
Ligne 6: | Ligne 6: | ||
==== Que sont les Events? ==== | ==== Que sont les Events? ==== | ||
- | Les events vus préviennent que quelque chose s'est passé dans votre programme comme l'appui sur une touche, le mouvement de la souris, un tick du timer, et la synchronisation du display. Allegro les utilises pour vous transmettre tout les types d'évènements, et vous pouvez créer votre propres events. | + | Les events vous préviennent que quelque chose s'est passé dans votre programme comme l'appui sur une touche, le mouvement de la souris, un tick du timer, et la synchronisation du display. Allegro les utilises pour vous transmettre tout les types d'évènements, et vous pouvez créer votre propres events. |
==== Pourquoi en ai-je besoin? ==== | ==== Pourquoi en ai-je besoin? ==== | ||
Ligne 31: | Ligne 31: | ||
ALLEGRO_DISPLAY *display = NULL; | ALLEGRO_DISPLAY *display = NULL; | ||
ALLEGRO_EVENT_QUEUE *event_queue = NULL; | ALLEGRO_EVENT_QUEUE *event_queue = NULL; | ||
+ | ALLEGRO_EVENT ev; | ||
+ | ALLEGRO_TIMEOUT timeout; | ||
+ | bool get_event; | ||
if(!al_init()) { | if(!al_init()) { | ||
Ligne 58: | Ligne 61: | ||
while(1) | while(1) | ||
{ | { | ||
- | ALLEGRO_EVENT ev; | ||
- | ALLEGRO_TIMEOUT timeout; | ||
al_init_timeout(&timeout, 0.06); | al_init_timeout(&timeout, 0.06); | ||
| | ||
- | bool get_event = al_wait_for_event_until(event_queue, &ev, &timeout); | + | get_event = al_wait_for_event_until(event_queue, &ev, &timeout); |
if(get_event && ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE) { | if(get_event && ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE) { | ||
Ligne 72: | Ligne 73: | ||
} | } | ||
- | al_destroy_display(display); | ||
al_destroy_event_queue(event_queue); | al_destroy_event_queue(event_queue); | ||
+ | al_destroy_display(display); | ||
return 0; | return 0; | ||
Ligne 83: | Ligne 84: | ||
<code c> event_queue = al_create_event_queue();</code> | <code c> event_queue = al_create_event_queue();</code> | ||
- | **al_create_event_queue** retourne un objet de type **ALLEGRO_EVENT_QUEUE**. En cas d'échec elle renvoi **NULL**. Cette fonction a peu de chances d'échouer dans ce programme, nous recommandons tout de même de tester la valeur renvoyée, en effet, vous pourrez avoir des soucis lorsque le programme devient plus compliqué. | + | **al_create_event_queue** retourne un objet de type **ALLEGRO_EVENT_QUEUE**. En cas d'échec elle renvoi **NULL**. Cette fonction a peu de chances d'échouer dans ce programme, nous recommandons tout de même de tester la valeur renvoyée, en effet, vous pourriez avoir des soucis lorsque le programme devient plus compliqué. |
<code c> al_register_event_source(event_queue, al_get_display_event_source(display));</code> | <code c> al_register_event_source(event_queue, al_get_display_event_source(display));</code> | ||
Ligne 94: | Ligne 95: | ||
**al_init_timeout** initialise un objet **ALLEGRO_TIMEOUT**, ici à 0.06 secondes, soit 60 millisecondes. | **al_init_timeout** initialise un objet **ALLEGRO_TIMEOUT**, ici à 0.06 secondes, soit 60 millisecondes. | ||
- | <code c> bool got_event = al_wait_for_event_until(event_queue, &ev, &timeout);</code> | + | <code c> bool get_event = al_wait_for_event_until(event_queue, &ev, &timeout);</code> |
- | Nous demandons à Allegro d'attendre un events, ou que le temps défini soit écoulé, which ever occurs first. **al_wait_for_event_until** renverra **false** si aucun event est déclenché avant que le temps soit écoulé. | + | Nous demandons à Allegro d'attendre un event, ou que le temps défini soit écoulé. **al_wait_for_event_until** renverra **false** si aucun event est déclenché avant que le temps soit écoulé. |
<code c> if(get_event && ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE) { | <code c> if(get_event && ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE) { | ||
Ligne 103: | Ligne 104: | ||
</code> | </code> | ||
- | Ici on vérifié si nous avons un event dans la queu. Si c'est un Display //close event//, on break la boucle du programme. | + | Ici on vérifié si nous avons un event dans la variable **ev**. Si c'est un Display //close event//, on break la boucle du programme. |
Ici s'achève notre article sur les events d'Allegro 5. | Ici s'achève notre article sur les events d'Allegro 5. | ||
- | [[allegro:display|Précédent]] << [[allegro:start|Sommaire]] >> [[allegro:timers|Suivant]] | + | [[allegro:display|Précédent]] << [[allegro:start#articles|Sommaire]] >> [[allegro:timers|Suivant]] |