Je suis nouveau sur Phaser et j'utilise actuellement Phaser v.2.0.7. Ce que je veux faire, c'est faire en sorte qu'un Sprite gère un événement tactile.
Comment puis-je attacher onTap
à un objet Sprite?
Je sais que cet événement tactile serait possible avec Sprite_obj.events.onInputDown
, mais j’ai quand même utilisé onInputUp
non plus, car lorsqu’une popup/modale (alerte) est déclenchée après la onInputDown
, vous devez cliquer deux fois pour que l’écouteur d’événements fonctionne à nouveau. (Ma solution personnelle à ce problème utilise inInputUp.)
Une autre chose que j'ai essayée est d'ajouter onTap
sur mon objet de canevas, canvas.input.onTap.add
, ce qui, à mon avis, ne convient pas à mon objectif. Oui, il peut maintenant gérer les événements tactiles, mais le problème est que je veux limiter l'événement tactile à l'image Sprite de la zone de dessin et non à la totalité de la zone de travail.
Est-ce que quelqu'un peut m'aider. Merci.
Vous devez d'abord activer le Sprite pour la saisie:
Sprite.inputEnabled = true;
Vous pouvez ensuite écouter n'importe quel événement envoyé par le Sprite lorsqu'il est impliqué dans la saisie, tel que:
Sprite.events.onInputDown.add(onDown, this);
...
function onDown(Sprite, pointer) {
// do something wonderful here
}
Le rappel reçoit 2 paramètres: le sprite et le pointeur qui ont provoqué l'événement d'entrée (comme dans un système à entrées multiples, cela peut varier souvent)
Le pointeur contient de nombreuses propriétés auxquelles vous pouvez accéder, telles que l'heure à laquelle il a été placé, l'historique des mouvements, etc. Voir la documentation Pointeur pour plus de détails.
Le Sprite a beaucoup d'événements, mais ceux-ci sont liés à l'entrée (ceci est levé directement à partir du code source de Phaser):
/**
* @property {Phaser.Signal} onInputOver - This signal is dispatched if the parent is inputEnabled and receives an over event from a Pointer.
* @default null
*/
this.onInputOver = null;
/**
* @property {Phaser.Signal} onInputOut - This signal is dispatched if the parent is inputEnabled and receives an out event from a Pointer.
* @default null
*/
this.onInputOut = null;
/**
* @property {Phaser.Signal} onInputDown - This signal is dispatched if the parent is inputEnabled and receives a down event from a Pointer.
* @default null
*/
this.onInputDown = null;
/**
* @property {Phaser.Signal} onInputUp - This signal is dispatched if the parent is inputEnabled and receives an up event from a Pointer.
* @default null
*/
this.onInputUp = null;
/**
* @property {Phaser.Signal} onDragStart - This signal is dispatched if the parent is inputEnabled and receives a drag start event from a Pointer.
* @default null
*/
this.onDragStart = null;
/**
* @property {Phaser.Signal} onDragStop - This signal is dispatched if the parent is inputEnabled and receives a drag stop event from a Pointer.
* @default null
*/
this.onDragStop = null;
Avez-vous essayé cela? this.input.onDown.add (obj.method, obj);