Outils pour utilisateurs

Outils du site


allegro:events

====== Différences ====== Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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]]
allegro/events.1323040893.txt.gz · Dernière modification: 2011/12/05 00:21 par mrhide