Chaque objet que vous créez possède sa propre liste discrète d'événements qui y sont ajoutés à partir de l' éditeur d'objets. Ces événements se divisent en deux catégories: ceux qui se déroulent à chaque étape du jeu et ceux qui sont «déclenchés» par un événement de jeu, comme l'instance atteignant le bord de la salle ou un clavier ou une souris. La liste complète des événements est donnée ci-dessous:
Cet événement se produit lorsqu'une instance de l'objet est créée pour la première fois et est la toute première chose qui se produit dans une instance placée dans la pièce via l'éditeur de pièce lorsqu'une pièce est entrée. Cela signifie que cet événement est l'endroit idéal pour initialiser des variables, démarrer des timelines, définir des chemins, etc... et faire n'importe quoi d'autre qui doit généralement être fait une seule fois ou seulement quand une instance est créée dans la pièce. Si votre objet a des variables d'objet ou des variables d' instance ajoutées dans l' éditeur d'objets ou dans l' éditeur de pièces, ces variables seront initialisées en premier, puis l'événement de création sera exécuté.
Souvenez-vous que vous pouvez modifier tout ce que vous avez configuré dans l'événement create à partir du code de création d'instance dans l'éditeur de salle, car il est exécuté directement après l'événement de création de l'instance.
Cet événement est l'événement à exécuter lorsqu'une instance est détruite. Il est souvent ignoré lors de l'ajout de comportements à des objets, mais il peut être très utile, par exemple en créant des explosions ou des effets de particules lorsqu'un ennemi est tué ou pour ré-engendrer une nouvelle instance de l'objet dans une autre partie de la pièce. même pour ajouter des points sur un score.
Cet événement sera appelé après tout événement qui supprime une instance de l'objet de la pièce. Ainsi, il sera déclenché si l'instance est détruite, si la salle se termine, ou si le jeu se termine, et est conçu pour vous permettre de «nettoyer» toutes les ressources dynamiques que vous pourriez avoir dans votre jeu (comme les surfaces, les données structures, etc...) ou pour effectuer toute tâche que vous avez besoin d'effectuer une fois lorsque l'instance est supprimée. Notez que cet événement sera appelé seulement après que tous les autres événements ont été appelés, donc ce sera toujours le dernier événement à être exécuté dans n'importe quelle instance quand il est retiré de la salle ou que la salle / le jeu est terminé.
L'événement d'alarme est divisé en 12 sous-événements, un pour chacune des alarmes possibles pouvant être définies dans une instance. Ainsi, lorsque vous cliquez sur le bouton Ajouter une alarme, cette fenêtre s'affiche:
Ici vous sélectionnez l'alarme que vous souhaitez créer et, une fois cela fait, vous verrez qu'il a été ajouté à la fenêtre d'événement vous permettant d'ajouter du code comme d'habitude. Mais qu'est-ce qu'une alarme? Eh bien, c'est un événement spécial qui ne fait rien, sauf si l'alarme a été précédemment définie, puis il attendra que cette alarme ait été réduite à 0 avant d'exécuter les actions ou le code que vous avez ajouté. Une fois que l'alarme a atteint 0 et exécuté le code, il sera décompté à -1, où il restera jusqu'à ce qu'il soit redéfini (ce qui signifie que vous pouvez vérifier la valeur d'une alarme pour voir si elle est supérieure à -1 vous si c'est en cours ou non). Donc, dites-vous définir alarm[0] dans l'événement de création de l'objet à 30, cela signifie que GameMaker Studio 2 compte 30 étapes de jeu avant d'exécuter les actions ou le code qui sont placés dans le jeu. alarm[0] un événement. Notez que la définition d'une alarme sur 0 ne déclenchera pas le code d'alarme, car l'événement est déclenché, mais l'alarme est immédiatement définie sur -1, de sorte que le code est ignoré. Si vous avez besoin d'une alarme pour passer à l'étape suivante, vous devez le régler sur 1.
Cela peut être très utile car il vous permet de mettre les choses en mouvement à des moments précis, et vous pouvez même les faire répéter car il n'y a rien pour vous empêcher de régler une alarme dans son propre cas. Imaginez que vous ayez un monstre et que vous vouliez qu'il tourne à droite toutes les trois secondes... eh bien, vous définiriez une alarme dans son événement de création au room speed * 3 (si la vitesse de la pièce est de 30, c'est 30 pas par seconde, multipliez donc par 3 et vous obtenez 3 secondes!) et dans l'événement d'alarme, vous aurez le code ou l'action pour définir sa direction, ainsi que l'action ( ou code) pour régler son alarme à room speed * 30 encore. De cette façon, vous pouvez configurer des boucles de jeu simples où les choses ne se produisent qu'à des intervalles spécifiques.
Il est à noter qu'une alarme sans action ou code ne s'y écrase pas. Cependant, même avec juste un commentaire et pas de code ou d'actions, l'alarme continuera de décompter et peut être réglée et vérifiée comme vous le feriez normalement.
GameMaker Studio 2 divise le temps en étapes avec la vitesse de la pièce définissant combien de ces étapes il est censé être par seconde. Une étape, c'est la boucle qui court constamment avec tous les événements vérifiés et déclenchés comme nécessaire pendant que le jeu fonctionne, comme vous pouvez l'imaginer, l'événement d'étape est un événement qui est vérifié à chaque étape du jeu pendant que l'instance existe.
L'événement d'étape est en fait composé de trois sous-événements qui sont décrits ci-dessous:
Pour la plupart des choses, l'événement d'étape standard sera très bien à utiliser, mais parfois vous voulez un peu plus de contrôle sur quel code s'exécute et à quelle heure, donc pour cela vous êtes fourni avec les événements d'étape Begin et End. Tous les trois sont vérifiés à chaque étape, mais leur ordre ne variera jamais même à travers les futures mises à jour du moteur de GameMaker Studio 2, ce qui signifie que c'est la seule méthode fiable pour s'assurer que quelque chose se passe avant tout.
À quoi l'événement step peut-il être utilisé? Eh bien, il peut être utilisé pour des actions ou du code qui doit être exécuté en continu. Par exemple, si un objet doit en suivre un autre, vous pouvez alors adapter la direction du mouvement à l'objet que nous suivons pour le maintenir en douceur. Soyez prudent avec cet événement, et ne mettez pas beaucoup d'actions compliquées dans l'événement d'étape des objets, surtout si vous prévoyez d'avoir beaucoup d'instances de l'objet dans votre salle de jeu, car cela pourrait ralentir le jeu. Beaucoup de choses peuvent être placées dans des alarmes, ou être déclenchées en utilisant certains des autres événements, plutôt que de se produire tout le temps.
Évidemment, lorsque vous créez un jeu, il est très important que vous sachiez quand deux (ou plus) instances d'un objet sont entrées en collision, et pour cela nous avons l'événement de collision. C'est un événement que vous placez dans un objet, puis spécifiez avec quel autre objet vous devriez vérifier les collisions.
Lorsque la physique n'est pas activée, ces collisions sont calculées en fonction du masque des deux objets (le masque est défini dans les propriétés de l'image-objet ou peuvent être affectés indépendamment dans les propriétés de l'objet) et se chevauchent ou non. Notez que si l'une ou l'autre des instances de la collision n'a pas de masque assigné (ou que le masque d'image-objet n'est pas défini), même si elle dessine quelque chose, aucune collision ne sera détectée. Si vous avez activé Physique, la collision sera basée sur le type de forme de collision ( Fixture ) que vous avez défini pour l'objet dans ses propriétés physiques, ainsi que sa réaction à la collision. Cela signifie que vous n'aurez peut-être pas besoin de code pour gérer la collision, mais cet événement devra toujours contenir au moins un commentaire pour que les collisions soient détectées.
Laisser le joueur contrôler les différents aspects de votre jeu est très important, et à cette fin GameMaker Studio 2 vous fournit une liste très complète des sous-événements du clavier qui peuvent être utilisés dans l'un des trois principaux événements du clavier. Pour l'événement clavier général, il est déclenché de manière continue, à chaque pas, aussi longtemps que la touche sélectionnée est enfoncée.
Il convient de noter que les événements de clavier sont déclenchés dans toutes les instances actives d'une pièce lorsqu'une clé est utilisée, mais seuls ceux ayant un événement défini pour cette clé particulière répondent et vous pouvez créer plusieurs événements clavier dans n'importe quel objet et les instances de cet objet répondra à chacun d'eux pendant que le jeu est en cours d'exécution.
Lorsque vous ajoutez un événement de clavier à un objet, le menu de sous-événements du clavier s'affiche, dans lequel vous pouvez spécifier la clé que vous devez vérifier:
La plupart d'entre eux sont assez évidents, mais passons rapidement en revue les sections - en haut, nous avons les flèches, suivies des touches de modification les plus utilisées, puis le reste du clavier (divisé en sous-sections pour que vous puissiez obtenir la clé exacte requise comme
ou
) et enfin deux sous-événements très spéciaux, No Key et Any Key. Comme leur nom l'indique, ce sont des sous-événements qui vérifient lorsqu'aucune touche n'est enfoncée ou lorsqu'une touche est enfoncée. Veuillez noter que les touches du pavé numérique produisent uniquement les événements correspondants lorsque le verrouillage numérique est activé.
Les événements Press et Release pour le clavier sont presque exactement les mêmes que ceux du clavier normal, sauf qu'au lieu d'être déclenchés en continu, ils sont déclenchés une seule fois. Quand le clavier enregistre d'abord qu'une touche a été pressée, il génère un événement Keyboard Pressed (ainsi qu'un événement Keyboard normal), et la première fois après qu'une touche n'est plus détectée comme pressée, elle déclenche un seul Keyboard. Événement de sortie.
L'événement souris est séparé en une série de sous-événements qui peuvent être sélectionnés pour vous donner un contrôle plus précis sur ce qui se passe dans votre jeu. Ici vous pouvez voir exactement quels sont ces sous-événements:
La gauche
, droite
et le milieu
Les événements de bouton (qu'ils soient normaux, enfoncés ou relâchés) fonctionnent tous sur le masque de l'instance qui a l'événement. Cela signifie que GameMaker Studio 2 vérifie la position de la souris dans la pièce lorsque ces boutons sont utilisés contre les masques de collision des instances qui ont un événement souris. S'il y a une "collision", alors l'événement sera déclenché, donc assurez-vous que toute instance avec ces événements a une image-objet avec un masque valide ou que l'objet a un masque sélectionné dans les propriétés de l'objet. Comme leur nom l'indique, ces événements seront déclenchés soit une fois lorsque le bouton de la souris choisi est enfoncé ou relâché, ou de façon continue à chaque étape pendant que le bouton est maintenu.
Les événements d'entrée et de sortie de la souris sont également similaires aux événements de bouton en ce qu'ils dépendent également du masque de l'instance pour fonctionner, mais cette fois ils sont déclenchés lorsque la souris "entre" touche l'instance ou la souris " quitte "(arrête de toucher) l'instance. Ces événements ne sont cependant pas continus et ne sont déclenchés qu'une seule fois à chaque fois que la souris entre ou sort de l'objet. Ils constituent donc une méthode idéale pour créer, par exemple, des boutons qui doivent être modifiés lorsque la souris les survole. normal lorsque la souris est supprimée.
Enfin, nous avons une autre section pour les événements de la souris qui est appelée la souris globale. Dans ce sous-menu, vous trouverez une sélection d'événements qui permettent d'enregistrer des événements de souris dans des instances, même lorsque la souris n'est pas sur eux ou même près d'eux. Ce sont des événements qui sont générés pour toutes les instances et s'il y a des actions ou du code définis pour l'événement spécifié, alors il sera exécuté, quelle que soit la position de la souris dans la salle de jeux.
S'il vous plaît noter que sur les appareils mobiles ou à écran tactile le bouton gauche de la souris
peut également être utilisé pour vérifier un onglet de doigt sur un écran tactile, et le bouton droit de la souris
est déclenché par un double tap sur l'écran (ce comportement peut être modifié en utilisant du code).
Cet événement est celui qui sera déclenché par l'utilisateur touchant l'écran (sur mobile) ou en cliquant et en déplaçant la souris (sur toutes les autres plateformes). Il détecte ce qui suit:
appuie sur - lorsqu'un utilisateur clique / touche et relâche rapidement
fait glisser - lorsqu'un utilisateur touche / clique et maintient, déplace son doigt / curseur
flicks - lorsque l'utilisateur se déplace et libère un toucher / clic dans un mouvement
pincements - lorsque l'utilisateur a deux doigts sur l'écran, puis les déplace ensemble / à part
tourne - lorsque l'utilisateur a deux doigts sur l'écran, puis les fait pivoter autour d'un point
Les différents événements contiendront toujours une carte DS appelée " event_data "map, qui contiendra un certain nombre de paires clé / valeur avec des données sur la position et le mouvement du toucher / clic Pour plus de détails sur tous les sous-événements disponibles et comment ils fonctionnent, veuillez consulter la section suivante:
Il y a un certain nombre d'événements spéciaux à utiliser lorsque vous GameMaker Studio 2 jeux avec GameMaker Studio 2 et ils sont pour la plupart regroupés sous l'événement Autre et peuvent être sélectionnés dans le menu contextuel des sous-événements qui apparaissent lorsque vous sélectionnez ceci. Voici une image de tous ces autres événements:
Cet événement est déclenché lorsqu'une instance sort de la pièce et est basé sur une vérification effectuée sur l'image-objet affectée (et ses propriétés), de sorte que même si vous avez défini l'échelle de l'image x ou y sur une valeur autre que Un, cet événement ne sera déclenché que lorsque le sprite entier sera hors de l'écran. Si l'instance n'a pas de sprite, alors la position de l'instance est utilisée et le moment où sa position x ou y est en dehors de la pièce déclenchera également l'événement. Cet événement est généralement utilisé pour des choses comme les balles, où elles sont détruites lorsqu'elles quittent la pièce pour ne pas se retrouver avec des millions de balles qui s'envolent à l'infini et qui ralentissent votre jeu. Notez que cet événement est uniquement déclenché une fois lorsque l'instance quitte la pièce initialement.
Cet événement est déclenché lorsqu'une instance "touche" le bord intérieur de la pièce et, comme l'événement de pièce externe, est basé sur une vérification effectuée sur l'image-objet affectée (et ses propriétés) de l'instance, de sorte que même si vous avez Définir l'échelle de l'image x ou y sur une valeur autre que celle-ci, cet événement est toujours déclenché au moment où une partie de l'image-objet rencontre la limite de la pièce. Si l'instance n'a pas de sprite, alors la position de l'instance est utilisée et au moment où sa position x ou y croise la limite de la pièce, elle déclenche également l'événement. Vous pouvez utiliser cet événement pour faire des choses comme dire à une instance de "rebondir" de nouveau vers la pièce plutôt que de sortir.
Les vues sont normalement définies dans l'éditeur de pièce et utilisées pour afficher uniquement une petite zone d'une grande pièce à la fois. Cet événement a sa propre liste de sous-événements qui est divisée en deux catégories (vue extérieure et intersection intersect), avec huit événements différents correspondant chacun aux huit vues disponibles. Ces deux catégories fonctionnent exactement de la même manière que les événements de pièce respectifs, en prenant seulement la limite de la vue comme étant la chose à vérifier par l'instance plutôt que la pièce.
Cet événement spécial n'est déclenché qu'une seule fois dans tout le jeu et uniquement pour les instances avec des actions ou du code placé dans l'événement. Ces instances doivent être présentes dans la première salle du jeu et ont été placées dans l'éditeur de la salle, plutôt que d'avoir été créées dynamiquement. Il convient de noter que cet événement se produit après l'événement de création de toutes les instances et peut donc contenir du code ou des actions avec des variables précédemment définies dans cet événement. Cet événement est généralement défini dans un seul objet "controller" et est généralement utilisé pour initialiser des variables globales, lancer de la musique, lire des fichiers et tout autre chose qui est habituellement fait une seule fois au début d'une partie.
Similaire à l'événement Game Start mentionné ci-dessus, cet événement n'est déclenché qu'une seule fois dans l'ensemble du jeu et ce, juste avant la fermeture effective de la fenêtre de jeu. Encore une fois, pour qu'une instance avec cet événement fasse réellement quelque chose, elle doit être dans la pièce lorsque le jeu est fermé. S'il vous plaît noter que cet événement n'est vraiment viable que pour les jeux Windows, Ubuntu (Linux) et MacOS en tant que dispositifs mobiles peuvent simplement fermer le jeu sans donner à GameMaker Studio 2 la possibilité d'appeler cet événement. Pour les jeux par navigateur réalisés avec le module HTML5, cet événement devrait fonctionner quand l'onglet de jeu ou le navigateur est fermé, mais tous les navigateurs ne supportent pas cette fonction (Firefox, Chrome et Safari font au moment de l'écriture).. Généralement, vous utiliseriez cet événement pour enregistrer des données.
Cet événement se produit pour toutes les instances initialement dans une pièce au début de la pièce. Veuillez noter que cela se produit après l'événement de création et peut donc dépendre des variables et des choses définies précédemment dans cet événement.
Cet événement arrive à toutes les instances qui se trouvent dans la pièce à la fin de la pièce. Cet événement est très utile pour "nettoyer" après la fin d'un niveau, par exemple vous pouvez supprimer les ressources chargées ici, ou supprimer un système de particules pour éviter les fuites de mémoire etc...
Dans GameMaker Studio 2 sprites ne sont pas statiques car ils peuvent avoir des sous-images et être animés à des vitesses différentes. Chaque image d'une animation (appelée une sous-image) a son propre numéro, commençant à 0, qui peut être vérifié dans le code ou même à travers des actions, mais parfois tout ce que vous devez savoir, c'est quand l'animation est terminée. C'est à ce moment-là que cet événement est déclenché, juste à la fin de l'animation lorsque l'index de sous-image montre que la dernière image a été atteinte. Cet événement est vraiment utile pour beaucoup de choses, par exemple un objet explosion où vous pouvez configurer l'instance pour qu'elle se détruise quand la dernière image de l'animation est atteinte.
Cet événement est conçu uniquement pour une utilisation avec les fonctions d'animation squelettiques. C'est un événement spécial qui est déclenché à chaque étape dans une instance qui utilise un sprite d'animation squelettique, et qui est conçu pour "intercepter" les données osseuses après que l'orientation des os a été calculée pour l'état d'animation en cours. utiliser pour dessiner. Cela vous permet d'apporter des modifications aux données de l'os en utilisant les fonctions appropriées.
Cet événement est conçu uniquement pour une utilisation avec les fonctions d'animation squelettiques. Cet événement est déclenché dans un objet auquel une image-objet d'animation squelettique est affectée et dans laquelle l'objet utilise le dessin par défaut pour l'image-objet affectée, ou l'image-objet est dessinée via draw_self(). Il ne déclenchera actuellement pas sur les sprites d'animation squelette tirés d'une autre manière. L'événement est conçu pour capturer et transmettre des données qui ont été assignées à des événements particuliers dans l'animation d'image-objet telle que définie dans l'éditeur utilisé pour les créer.
Lorsque l'événement d'animation est déclenché, un ds_map sera créé appelé le event_data carte (à peu près la même chose que nous avons la async_load carte pour un événement asynchrone). Cette carte aura toutes les paires clé / valeur suivantes que vous pouvez analyser pour obtenir des informations sur l'événement:
- "nom": le nom de l'événement (tel que défini dans le programme d'animation)
- "track": l'index de la piste sur laquelle l'animation joue (la valeur par défaut est 0)
- "entier": une valeur entière associée à l'événement (définie dans le programme d'animation, la valeur par défaut est 0)
- "float": une valeur flottante associée à l'événement (telle que définie dans le programme d'animation, la valeur par défaut est 0.0)
- "chaîne": une valeur de chaîne associée à l'événement (telle que définie dans le programme d'animation, par défaut est une chaîne vide "")
Les chemins peuvent être une partie importante de la création de n'importe quel jeu, que ce soit pour un jeu de type Tower Defense, ou un shoot-em-up ou autre, et il est souvent très important qu'une instance fasse une action particulière quand elle atteint la fin chemin. Cet événement détecte ceci et est déclenché quand il arrive vous permettant d'ajouter du code ou des actions pour faire face aux circonstances, par exemple dans un jeu de tower defense que vous utiliseriez pour détruire l'instance et supprimer un point de vie de l'objet goal.
Ce sont des événements spéciaux qui ne sont pas déclenchés par GameMaker Studio 2 lui-même, mais doivent être appelés de manière implicite par vous à partir d'une boîte de code pendant que le jeu est en cours d'exécution. Ces événements peuvent contenir du code ou des actions et faire les mêmes choses que n'importe quel autre événement, ce qui les rend très utiles pour créer vos propres événements qui se produisent lorsque vous décidez.
Cet événement est celui qui régit ce que vous voyez sur l'écran lorsque vous exécutez votre partie, et est divisé en plusieurs "sous-événements" distincts:
Comme vous pouvez le voir, la catégorie d'événement draw a plusieurs types d'événements différents. Draw Begin, Draw et Draw End sont les événements de tirage "standard" que vous utiliserez probablement le plus. Par défaut, l'événement Draw principal est toujours appelé pour chaque instance, qu'il ait ou non un sprite, bien que si vous marquez l'instance comme invisible, l'événement ne sera pas déclenché (gardez cela à l'esprit si vous avez une logique de jeu dans l'événement draw d'un objet invisible, car il ne fonctionnera pas). L'événement de dessin principal est également celui où GameMaker Studio 2 dessine l'image-objet d'instance lorsqu'il n'y a pas de code ni d'action dans l'événement (par exemple: vous ne l'avez pas ajouté dans la liste d'événements de l'objet). Le dessin par défaut utilise l'image-objet associée à l'occurrence et la dessine avec toutes les transformations définies dans le code ou les actions appliquées.
Les événements de dessin standard dessinent avant les événements Draw GUI et entre les événements Pre Draw et Post Draw, ce qui signifie que tout ce qui est dessiné dans cet événement est dessiné sous celui de l'événement Draw GUI, quel que soit le calque Draw GUI événement sera toujours dessiné sur tout ce qui est dessiné dans l'événement draw normal, quel que soit l'ordre des calques).
Notez que ce qui précède est simplement un aperçu du fonctionnement des événements Draw, mais pour plus de détails sur tous les sous-événements disponibles, consultez la section suivante:
Cet événement est spécial car il n'est pas déclenché par défaut par GameMaker Studio 2, mais plutôt à la fin d'une autre action, comme le chargement d'un fichier ou la réponse d'un serveur web. L'événement réel est divisé en plusieurs sous-événements:
Donc, disons que vous voulez ajouter un fichier image à GameMaker Studio 2. Eh bien, vous le codez dans un autre événement (peut-être l'événement Create) d'un objet puis faites dessiner une barre de chargement en attendant, en interrogeant l'événement asynchrone approprié jusqu'au rappel qui indique à GameMaker Studio 2 le fichier a été chargé. Vous pouvez ensuite utiliser les données renvoyées dans cet événement pour faire d'autres choses, comme changer de salle ou acheter un objet.
Notez que ce qui précède est simplement un aperçu du fonctionnement de l'événement asynchrone, mais pour plus de détails sur tous les sous-événements disponibles, veuillez consulter la section suivante:
Il est à noter que vous pouvez nommer des événements, ou au moins leur donner un court texte descriptif qui sera affiché à côté d'eux dans l'éditeur d'événements. Pour ce faire, ajoutez simplement ce qui suit dans la toute première ligne de l'éditeur de code de l'événement:
/// @description Your text here
Donc, vous pourriez avoir quelque chose comme ça dans - par exemple - un événement d'alarme
/// @description This is the AI Fight alarm
Et maintenant, dans votre éditeur d'événements, vous verrez ceci: 
Quand on considère Evénements dans GameMaker Studio 2, il faut noter que l'ordre exact dans lequel les événements vont se produire à chaque étape ne peut pas être clairement indiqué, simplement parce qu'il dépend du fonctionnement interne de GameMaker Studio 2 et cela peut changer le logiciel se développe. Cependant, certains événements se dérouleront toujours dans le même ordre. Le premier ensemble d'événements qui se produira toujours de la même manière est celui qui se produit lors de la première entrée d'une pièce. L'ordre dans lequel les différents événements vont se déclencher est:
Il convient également de noter que vous pouvez également définir l'ordre dans lequel les instances spécifiques sont créées dans l'éditeur de salle lui-même en les déplaçant vers le haut ou vers le bas dans la liste de la fenêtre Propriétés de la couche d'instance.
En dehors de ces événements spécifiques, le seul ordre connu qui se produira toujours de la même manière, peu importe ce qui appartient aux événements en trois étapes et aux différents événements de tirage. Ceux-ci resteront toujours cohérents, donc si vous avez du code qui repose sur un timing spécifique à chaque étape de votre jeu, vous devez utiliser:
Tous les sous-événements de dessin sont également toujours traités dans le même ordre que celui qui suit (sauf pour l'événement Resize, qui est déclenché différemment):