Crafty Beyond the Basics Événements de souris et de toucher

Dans la dernière série Crafty, vous avez découvert différentes manières de déplacer des éléments à l’aide du clavier. Bien qu'un clavier puisse vous aider à créer une variété de jeux, certaines situations vous obligent à contrôler différents événements de souris pour rendre le jeu plus agréable. Par exemple, considérons un jeu dans lequel des ballons apparaissent à des endroits aléatoires sur l'écran. Si l'utilisateur doit cliquer sur les bulles pour marquer des points, vous aurez certainement besoin d'un composant Souris..

De même, le Clavier composant ne sera d'aucune utilité lorsque vous développez des jeux pour appareils mobiles. Dans ce cas, vous devrez utiliser le composant Touch pour créer vos jeux. Dans ce tutoriel, vous apprendrez à la fois les composants Mouse et Touch dans Crafty..

Le composant souris

le Souris composant est utilisé pour ajouter des événements de base de la souris aux entités. Voici une liste de tous les événements inclus dans ce composant:

  • MouseOver: Cet événement est déclenché lorsque la souris entre dans une entité.
  • MouseOut: Cet événement est déclenché lorsque la souris quitte une entité.
  • Souris vers le bas: Cet événement est déclenché lorsque le bouton de la souris est enfoncé sur une entité.
  • MouseUp: Cet événement est déclenché lorsque le bouton de la souris est relâché dans une entité.
  • Cliquez sur: Cet événement est déclenché lorsque l'utilisateur clique sur le bouton de la souris dans une entité.
  • DoubleClick: Cet événement est déclenché lorsque vous double-cliquez sur un bouton de la souris sur une entité.
  • MouseMove: Cet événement est déclenché lorsque la souris se déplace dans une entité.

N'oubliez pas que les événements de souris ne seront déclenchés sur une entité que si vous avez ajouté le paramètre Souris composant à eux. Voici un code qui lie le MouseMove événement à la boîte dans la démo ci-dessous:

var Box = Crafty.e ("2D, toile, couleur, souris") .attr (x: 200, y: 100, w: 200, h: 200). couleur ("noir") .origin ("centre ") .bind ('MouseMove', function () this.rotation + = 1;);

Après que la boîte a été liée à la MouseMove événement, chaque mouvement de la souris sur la boîte la fera pivoter de 1 degré. le .origine() Cette méthode a été utilisée pour définir le point de rotation de notre boîte au centre. Cela peut aussi prendre d’autres valeurs comme "en haut à gauche", "en bas à droite", etc. 

Essayez de déplacer le curseur dans et hors de la boîte dans la démo. Maintenez le bouton de la souris enfoncé dans la boîte pour déclencher le Souris vers le bas événement et changer la couleur de la boîte en rouge.

UNE MouseEvent object est également passé en tant que paramètre à la fonction de rappel de tous ces événements de souris. Il contient toutes les données liées à cet événement de souris spécifique.. 

Vous pouvez également vérifier quel bouton de la souris a été cliqué par l'utilisateur à l'aide du bouton bouton de la souris propriété. Par exemple, un clic gauche peut être détecté en utilisant Crafty.mouseButtons.LEFT. De même, un clic du bouton central peut être détecté à l'aide de Crafty.mouseButtons.MIDDLE.

Composant MouseDrag

le MouseDrag composant fournit une entité avec différents événements de souris par glisser-déposer. Cependant, l'ajout de ces événements n'aura aucun sens si l'entité elle-même ne peut pas être glissée et déposée. Vous pouvez ajouter des capacités de glisser-déposer à une entité en utilisant le Glissable composant. Ce composant écoute les événements de la MouseDrag composant et déplace l'entité donnée en conséquence. le MouseDrag composant est automatiquement ajouté à toute entité avec le Glissable composant. 

le Glissable composant a trois méthodes: .enableDrag (), .disableDrag (), et .dragDirection (). Les deux premières méthodes activent et désactivent le glissement sur une entité, respectivement. La troisième méthode est utilisée pour définir le sens du glissement. 

Par défaut, l'entité se déplacera dans la direction du déplacement du curseur. Cependant, vous pouvez limiter le mouvement de l'entité à une direction verticale en utilisant this.dragDirection (x: 0, y: 1). De même, vous pouvez forcer une entité à se déplacer uniquement dans une direction horizontale en utilisant this.dragDirection (x: 1, y: 0)

Vous pouvez également spécifier la direction directement en degrés. Par exemple, pour déplacer un élément de 45 degrés, vous pouvez simplement utiliser this.dragDirection (45) au lieu de this.dragDirection (x: 1, y: 1).

En plus de glisser-déposer des éléments, il est également nécessaire de savoir quand la traînée a commencé et s'est arrêtée. Ceci peut être accompli en utilisant StartDrag et StopDrag événements. Il y a aussi Glisser événement qui est déclenché pendant le glissement d'une entité.

Voici le code pour faire glisser la boîte rouge dans la démo ci-dessous:

var hBox = Crafty.e ("2D, toile, couleur, déplaçable") .attr (x: 50, y: 50, w: 50, h: 50) .color ("rouge") .dragDirection (0) .bind ('Glisser', fonction (evt) this.color ("noir");) .bind ('StopDrag', fonction (evt) this.color ("rouge"););

Après avoir défini la largeur, la hauteur et la position de la boîte, j’ai utilisé .dragDirection (0) restreindre le mouvement de notre boîte dans la direction horizontale. J'ai aussi utilisé le .lier() méthode pour lier l'entité à la Glisser et StopDrag méthode. 

Le passage de la couleur au noir indique à l'utilisateur que l'entité est en train de glisser. Vous pouvez aussi utiliser le StartDrag événement au lieu de Glisser parce que la couleur de l'entité n'a besoin d'être changée qu'une seule fois. le Glisser L'événement est plus approprié lorsque vous devez modifier ou surveiller en permanence une propriété de l'entité glissée. Par exemple, vous pouvez utiliser le code suivant pour désactiver le glissement sur la boîte une fois qu'elle a atteint l'emplacement souhaité..

hBox.bind ('Glisser', fonction (evt) this.color ("noir"); if (this.x> 300) this.disableDrag (););

Le composant tactile

Si vous devez accéder à des événements tactiles pour une entité, vous pouvez utiliser le Toucher composant. Ce composant vous donne accès à quatre événements différents:

  • TouchStart: Cet événement est déclenché lorsqu'une entité est touchée.
  • TouchMove: Cet événement est déclenché lorsqu'un doigt est déplacé sur une entité.
  • TouchAnnuler: Cet événement est déclenché lorsque quelque chose perturbe l'événement tactile.
  • TouchEnd: Cet événement est déclenché lorsqu'un doigt est levé sur une entité ou s'il la quitte.

Les trois premiers événements ont accès à la TouchEvent objet, qui contient toutes les informations sur le toucher.

Certains jeux ou projets peuvent nécessiter la détection de multiples contacts. Ceci peut être réalisé en activant le multi-touch en utilisant Crafty.multitouch (true). Passer cette méthode vrai ou faux allume et éteint le multi-touch.

Avant d'utiliser le Toucher composant de vos projets, sachez qu’il est actuellement incompatible avec le Glissable composant.

Conclusion

Après avoir terminé ce didacticiel, vous devriez maintenant être en mesure de gérer correctement différents événements de souris ou de créer facilement des jeux basés sur le glisser-déposer. N'oubliez pas que j'ai utilisé la version 0.7.1 de Crafty dans ce tutoriel et que les démos risquent de ne pas fonctionner avec d'autres versions de la bibliothèque.. 

Dans le prochain tutoriel, vous apprendrez à utiliser des feuilles de sprite pour animer différents personnages de jeu dans Crafty..