Définition | Utilisation | Exemple | Côté technique |
La gestion d'évènements temporels peut fonctionner sans l'afficheur et sans l'initialisation setGraphMode(). ScanEvent() ne peut pas lire le touchpad et croit que l'on appuie pas dessus, et passe donc à la gestion temporelle.
La gestion des événements s'occupe de deux choses différentes l'une apès l'autre, assez semblable dans
le principe, mais suffisament différentes pour être disociée: Gestion des contrôlesLa gestion des contrôles passe par deux méthodes non documentées car elles sont utilisées en fonctionnement interne, et un utilisateur non averti ne doit pas les modifier. Un utilisateur averti, ira voir comment elle fonctionnent dans le source. scanEvent()génère un événement en appelant onClic() d'un contrôle si on vient d'appuyer sur ce contrôle, un événement en appelant la méthode onClac() d'un contrôle si on vient de le relâcher. Grâce à onClic() et onClac(), les contrôles vont se sélectionner, se déselectionner, appeler les méthodes internes onSelect() et onUnselect() qui par défaut ne font rien (laissées pour l'utilisateur) ainsi que les fonctions externes si elles ont été définies en utilisant *onClicFunction et *onClacFunction. scanEvent() mémorise l'état du touchpad de son dernier appel. Il mémorise aussi si un contrôle a
été sélectionné et si oui le quel. Quand on appelle scanEvent(): Pour ne pas perdre les informations sur le touchpad qu'il faut voir le plus rapidement, on doit bien souvent le metre seul dans la boucle loop(). Mais il n'est pas intrdit d'y avoir aussi autre chose à faire. Les contrôles sont insérés dans une liste chaînée par le début au moment de leur création par le constructeur. Comme scanEvent() va lire cette liste pour trouver un contrôle, c'est le dernier entré qui sera vu avant. Gestion des horlogesLa gestion des horloges passe par une méthode non documentée car elle est utilisée en fonctionnement interne, et un utilisateur non averti ne doit pas la modifier. Un utilisateur averti, ira voir comment elle fonctionne dans le source. scanEvent() génère un événement en appelant onCloc() d'une horloge si elle a fini son comptage. Grâce à onCloc(), les horloges vont se sélectionner, se déselectionner. Puis scanEvent() appelle la méthode interne onTime() qui par défaut ne fait rien (laissée pour l'utilisateur) ainsi que la fonction externe si elle a été définie en utilisant *onTimeFunction. scanEvent() ne mémorise pas les états des horloges contrairement à ce qui est fait pour les contrôles, et elle scanne toutes les horloges. Ainsi si deux horloges ont fini leur comptage en même temps, elle n'oubliera pas de s'occuper des deux. Pour ne pas avoir des temps trop différents de ceux voulus, il faut scruter les horloges le plus rapidement possible et c'est pour cela qu'on doit bien souvent le metre seul dans la boucle loop(). Mais il n'est pas intrdit d'y avoir aussi autre chose à faire. Les horlogess sont insérés dans une liste chaînée par le début au moment de leur création par le constructeur. L'ordre d'insertion n'a pas une grande importance car scanEvent() va scruter toutes les hologes.
|