2017-03-22 2 views
-1

Je suis un didacticiel Fruit Ninja utilisant Phaser. Pour le menu principal, l'auteur a utiliséComment convertir un événement clavier Phaser en événement tactile

if (this.game_state.game.input.keyboard.isDown(Phaser.Keyboard.SPACEBAR)) { 
    this.menu_items[this.current_item_index].select(); 

Comment puis-je mettre en œuvre cette même logique en utilisant les événements tactiles je peux l'utiliser sur ma tablette/téléphone? Le reste de la logique de balayage utilise le toucher, sauf pour le menu. Je me demandais comment je pourrais changer cela.

Répondre

0

Cela me semble être plus qu'un simple "changer cela à cela". L'extrait de code que vous avez posté me fait croire que le menu conserve une sorte d'index en cours de l'élément de menu en surbrillance (peut-être en utilisant les touches fléchées?).

Si votre menu est composé de sprites par exemple, vous pouvez attacher un événement tactile à chaque image-objet. Dites que vous avez un sprite appelé exitGameMenuItem dans le menu. Vous devez activer son entrée et y attacher un rappel d'événement onInputDown (et cela fonctionnera avec la souris et le toucher).

exitGameMenuItem.inputEnabled = true; 
exitGameMenuItem.events.onInputDown.add(function() { 
    // call the exit game function here 
}, this); 

Sinon, vous pouvez ajouter le rappel directement (sans l'emballer dans une fonction) comme ceci:

exitGameMenuItem.events.onInputDown.add(this.exitGame, this); 

(Cela suppose que vous avez une fonction exitGame() dans le même état).

+0

Oui, le code utilise un index pour basculer entre les éléments du menu principal. Ils sont modifiés par les touches fléchées et en appuyant sur la barre d'espace, il sélectionne l'élément de menu actuellement sélectionné. Y at-il un moyen de sélectionner l'élément de menu en utilisant un événement tactile au lieu de la barre d'espace? – user1752240

+0

Oui, je l'ai expliqué. –

+0

Comment puis-je faire fonctionner cela en utilisant le framework Phaser? – user1752240