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:10]
mrhide [Basic Example]
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_event_queue(event_queue);​
    ​al_destroy_display(display);​    ​al_destroy_display(display);​
-   ​al_destroy_event_queue(event_queue);​ 
  
    ​return 0;    ​return 0;
Ligne 79: Ligne 80:
 </​file>​ </​file>​
  
-==== Walk through ​==== +==== Détails ​====
- +
-This walk through includes code from the previous Display example. Refer to the previous tutorial'​s walk through for information on code that is not explained here.+
  
 <code c>   ​event_queue = al_create_event_queue();</​code>​ <code c>   ​event_queue = al_create_event_queue();</​code>​
  
-**al_create_event_queue** ​will return a new **ALLEGRO_EVENT_QUEUE** ​objectShould this function fail, it will return ​**NULL**. ​While failure is unlikely in this simple exampleyou are better off checking every single function that could fail for any errors. You may have fewer hidden problems when the program becomes more complicated.+**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 programmenous 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>​
  
-Here we actually tie the Display ​to the event queue so we can be informed of events from the display such as the //close event//​. ​Without this function callthe display ​events will not be placed in this queue and thus will not be handled.+Ici nous dirigeons le Display ​vers notre queue de manière à être informé des event comme le //close event//​. ​Sans l'​appel à cette fonctionles events liés au display ​ne seront pas placés dans cette queue et ne seront pas traités.
  
 <code c>   ​ALLEGRO_TIMEOUT timeout; <code c>   ​ALLEGRO_TIMEOUT timeout;
    ​al_init_timeout(&​timeout,​ 0.06);    ​al_init_timeout(&​timeout,​ 0.06);
 </​code>​ </​code>​
-**al_init_timeout** ​initializes a previously defined ​**ALLEGRO_TIMEOUT** ​object. In this case we are initializing it to 0.06 seconds from nowor 60 milliseconds in the future.+**al_init_timeout** ​initialise un objet **ALLEGRO_TIMEOUT**, ici à 0.06 secondessoit 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>​
  
-We tell Allegro ​to wait till an event arrivesor until the time out defined previously has elapsed, which ever occurs first. **al_wait_for_event_until** ​will return ​false if it didn't return an event before the timeout.+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 105: Ligne 104:
 </​code>​ </​code>​
  
-Here we check if we received an event in the event queueIf it is a Display //close event//, ​we break out of the program loop.+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.
  
-That concludes our basic introduction to Events in Allegro.+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.1323040204.txt.gz · Dernière modification: 2011/12/05 00:10 par mrhide