Développement XNA pour la XBox et le PC
62
À présent, ajoutez une nouvelle classe au projet et nommez-la TextureManager. Votre
gestionnaire devra utiliser une collection pour stocker les images. En analysant le
problème, on se rend rapidement compte qu’un dictionnaire est tout à fait approprié : lier
le nom d’une image à l’image elle-même est une bonne solution.
Ajoutez également un objet de type ContentManager que vous référencerez dans le constructeur de la classe. Ainsi, vous n’aurez pas à le repasser en argument à chaque utilisation du
gestionnaire.
Il ne reste plus que la méthode qui nous intéresse tout particulièrement. La figure 3-12
résume bien le comportement que vous devez programmer. Utilisez la méthode ContainsKey()
du dictionnaire pour vérifier si une image a déjà été chargée ; si c’est le cas, renvoyez-la,
sinon chargez-la avant de la renvoyer.
using System.Collections.Generic;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace GestionnaireImage
{
class TextureManager
{
Dictionary textureBank = new Dictionary ➥Texture2D>();
ContentManager content;
public TextureManager(ContentManager content)
{
this.content = content;
}
public Texture2D GetTexture(string assetName)
{
if (textureBank.ContainsKey(assetName))
return textureBank[assetName];
else
{
textureBank.Add(assetName, content.Load(assetName));
return textureBank[assetName];
}
}
}
}
Il ne reste plus qu’à utiliser le gestionnaire. Dans la définition de la classe Sprite, modifiez
la méthode LoadContent(). À la place du paramètre de type ContentManager, ajoutez-en un
de type TextureManager et employez la fonction que vous venez de définir.
public void LoadContent(TextureManager textureManager, string assetName)
{
texture = textureManager.GetTexture(assetName);
}
=Labat FM.book Page 62 Vendredi, 19. juin 2009 4:01 16
Précédent

- 83/366

Suivant