Développement XNA pour la XBox et le PC
76
Maintenant, ajoutez une nouvelle classe au projet et nommez-la KeyboardService. Cette
classe devra implémenter l’interface IKeyboardService, mais devra aussi hériter de la classe
GameComponent, laquelle implémente les interfaces IGameComponent et IUpdateable. Ces interfaces imposent respectivement l’implémentation des méthodes Initialize() et Update().
La classe Game dispose justement d’une collection de GameComponent, ainsi les méthodes
citées précédemment seront automatiquement appelées pour les objets de cette collection.
Vous retrouverez ici la classe KeyboardService. Il n’y a rien de particulier à signaler ici :
dans le constructeur, on se contente d’ajouter la classe courante à la collection de service
de l’objet Game et dans la méthode Update(), on enregistre l’état du clavier. Enfin, la fonction
IsKeyDown() se contentera de consulter la méthode éponyme de l’objet KBState.
class KeyboardService : GameComponent, IKeyboardService
{
KeyboardState KBState;
public KeyboardService(Game game)
: base(game)
{
game.Services.AddService(typeof(IKeyboardService), this);
}
bool IsKeyDown(Keys key)
{
return KBState.IsKeyDown(key);
}
public override void Update(GameTime gameTime)
{
KBState = Keyboard.GetState();
base.Update(gameTime);
}
}
Ajoutez, dans la méthode Initialize() de votre classe Game, un nouvel objet KeyboardService
à la collection de Components.
this.Components.Add(new KeyboardService(this));
Dans la méthode Update(), vous allez devoir accéder à votre service. La ligne suivante
sert à récupérer un service depuis la collection de la classe Game. Il est important de garder
en mémoire que la collection est un dictionnaire et que les valeurs sont donc indexées par
type : il faut préciser celui de notre service, c’est le but de l’opérateur typeof.
this.Services.GetService(typeof(IKeyboardService))
Cependant, à ce stade, l’objet que vous récupérez n’est toujours pas du type IKeyboardService,
vous allez donc devoir le convertir. Cette opération s’appelle le casting : en précisant le
=Labat FM.book Page 76 Vendredi, 19. juin 2009 4:01 16
76
Maintenant, ajoutez une nouvelle classe au projet et nommez-la KeyboardService. Cette
classe devra implémenter l’interface IKeyboardService, mais devra aussi hériter de la classe
GameComponent, laquelle implémente les interfaces IGameComponent et IUpdateable. Ces interfaces imposent respectivement l’implémentation des méthodes Initialize() et Update().
La classe Game dispose justement d’une collection de GameComponent, ainsi les méthodes
citées précédemment seront automatiquement appelées pour les objets de cette collection.
Vous retrouverez ici la classe KeyboardService. Il n’y a rien de particulier à signaler ici :
dans le constructeur, on se contente d’ajouter la classe courante à la collection de service
de l’objet Game et dans la méthode Update(), on enregistre l’état du clavier. Enfin, la fonction
IsKeyDown() se contentera de consulter la méthode éponyme de l’objet KBState.
class KeyboardService : GameComponent, IKeyboardService
{
KeyboardState KBState;
public KeyboardService(Game game)
: base(game)
{
game.Services.AddService(typeof(IKeyboardService), this);
}
bool IsKeyDown(Keys key)
{
return KBState.IsKeyDown(key);
}
public override void Update(GameTime gameTime)
{
KBState = Keyboard.GetState();
base.Update(gameTime);
}
}
Ajoutez, dans la méthode Initialize() de votre classe Game, un nouvel objet KeyboardService
à la collection de Components.
this.Components.Add(new KeyboardService(this));
Dans la méthode Update(), vous allez devoir accéder à votre service. La ligne suivante
sert à récupérer un service depuis la collection de la classe Game. Il est important de garder
en mémoire que la collection est un dictionnaire et que les valeurs sont donc indexées par
type : il faut préciser celui de notre service, c’est le but de l’opérateur typeof.
this.Services.GetService(typeof(IKeyboardService))
Cependant, à ce stade, l’objet que vous récupérez n’est toujours pas du type IKeyboardService,
vous allez donc devoir le convertir. Cette opération s’appelle le casting : en précisant le
=Labat FM.book Page 76 Vendredi, 19. juin 2009 4:01 16
