Après le clavier, occupons-nous de la souris. Il est très simple de rendre un sprite "cliquable".

Si nous nommons notre sprite "monSprite", il suffit d'écrire :


monSprite.inputEnabled=true ;
			

Ensuite pour que le sprite "réagisse" au clic de souris, il faudra écrire :


monSprite.events.onInputDown.add(maFonction, this) ;
			

Nous mettons en place ici la notion d'événement : le sprite est "surveillé" en permanence (inutile de mettre cette ligne dans la fonction update). Le "onInputDown" correspond au clic de souris.

En cas de clic de souris sur le sprite "monSprite", la fonction "maFonction" sera exécutée (1er paramètre de la méthode "add").

Le second paramètre de la méthode "add", this, correspond à l'objet qui a "subi" le clic, c'est à dire "monSprite", mais cela n'a pas une grande importance pour nous (du moins pour l'instant).

À faire vous même 5.1

Analysez le programme et essayez de prévoir ce qui se passera quand l'utilisateur cliquera sur le sprite "monSprite".


var game = new Phaser.Game(800,600,Phaser.AUTO,'content',{preload: preload, create: create,update:update});
function preload(){
    game.load.image('smiley','asset/smiley.png');
}
function create(){
    monSprite=game.add.sprite(400,300,'smiley');
    monSprite.anchor.setTo (0.5,0.5);
    monSprite.inputEnabled=true;
    monSprite.events.onInputDown.add(monClic,this);
}
function monClic(){
    alert ("Cela fonctionne ! :-)")
}
function update(){
}
			

Vérifiez que l'hypothèse que vous avez émise ci-dessus est valable en testant le programme.


À faire vous même 5.2

Sachant qu'il est possible de "tuer" un sprite (le faire disparaître) grâce à la méthode kill() (pour "tuer" le sprite "monSprite" on écrira :


monSprite.kill()
			

Sachant qu'il est possible de "ramener à la vie" un sprite préalablement tué à l'aide de la méthode revive() :


monSprite.revive()
			

et sachant enfin qu'il est possible de connaître l'état actuel d'un sprite avec le paramètre "alive" (si


monSprite.alive
			

est égal à true alors le sprite est "vivant", si "monSprite.alive" est égal à false alors le sprite est (actuellement) "mort", écrivez un programme qui :


Il est possible grâce à la souris de déplacer le sprite dans la fenêtre de jeu (faire ce que l'on appelle un "drag and drop") en cliquant sur le sprite, en maintenant le clic pendant le déplacement et en relâchant le clic une fois la nouvelle position atteinte. Pour cela il suffit d'ajouter 2 lignes :


monSprite.inputEnabled=true;
monSprite.input.enableDrag(true);
			

À faire vous même 5.3

Écrivez un programme qui affichera un sprite au centre de l'écran. Ce sprite devra être "déplaçable" par "drag and drop".